<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://moddingwiki.shikadi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SaxxonPike</id>
	<title>ModdingWiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://moddingwiki.shikadi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SaxxonPike"/>
	<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/wiki/Special:Contributions/SaxxonPike"/>
	<updated>2026-05-14T06:33:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.11</generator>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=12059</id>
		<title>ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=12059"/>
		<updated>2024-11-18T21:02:58Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Versions */ Some details about version differences&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ZZT&#039;&#039;&#039; is a game creation system created by Tim Sweeney in 1991, the first game developed and published by Potomac Computer Systems (later Epic Megagames, now Epic Games.) There were 4 worlds released with the commercial version of the game: TOWN, CAVES, CITY, and DUNGEONS. The shareware version of ZZT came with just TOWN. In all versions of the game, the built-in world editor is fully functional (however, it will not edit saved games or locked worlds natively.)&lt;br /&gt;
&lt;br /&gt;
Later, [[Super ZZT]] was released based on this engine.&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code. In versions prior to v3.2, standard cheats will not work until the +debug cheat is used. This also enables the display of how much memory is available on the heap, in bytes. In the upper-right corner, it will show the letter &#039;m&#039; followed by this value. OOP code on the currently shown board and the game&#039;s entire compressed board data consume heap memory.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v3.2. Other versions of the game that can be found are v3.1, v3.0, and v2.0. Aside from improvements in input handling and visual appearance, cheat availability and copyright messages, there are no observable differences between these versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 89,792 (89,792)&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| 47,473 (95,440)&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| 47,471 (95,616)&lt;br /&gt;
|-&lt;br /&gt;
| 3.2&lt;br /&gt;
| 47,764 (96,080)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0 ===&lt;br /&gt;
&lt;br /&gt;
The first available version. Uses standard text mode with disconnected block graphics (1 empty pixel column between characters). The standard keyboard buffer is used, so holding down arrows and other such keys will cause the action to be repeated even after the key is released. Cheats require the ?+debug code to be entered.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.0 ===&lt;br /&gt;
&lt;br /&gt;
In this version, a refined keyboard buffer is used, so releasing arrow keys will stop the player from continuing to move after the key is released.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.1 ===&lt;br /&gt;
&lt;br /&gt;
The ZZT.CFG format has changed, nothing else noticeable.&lt;br /&gt;
&lt;br /&gt;
=== Version 3.2 ===&lt;br /&gt;
&lt;br /&gt;
This is the final official version. The ZZT.CFG format changed again. A connected graphics mode is used (no empty pixel column) making board art a lot easier on the eyes. ?+debug is no longer required to use cheats. This is the version most recommended for playing any game worlds, official or otherwise.&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[CFG Format (ZZT)|CFG Format]] - ZZT.CFG contains the startup configuration and serial number.&lt;br /&gt;
* [[DAT Format (ZZT)|DAT Format]] - In 3.0 and later, ZZT.DAT contains help files and end screen messages. This is not present in 2.0; the files are stored in the directory.&lt;br /&gt;
* [[HI Format (ZZT)|HI Format]] - High scores.&lt;br /&gt;
* [[Binary Text Format (ZZT)|HLP Format]] - In 2.0, these are standard text files. In 3.0 and later, they are encoded differently.&lt;br /&gt;
* [[Binary Text Format (ZZT)|MSG Format]] - In 2.0, these are standard text files. In 3.0 and later, they are encoded differently.&lt;br /&gt;
* [[ZZT Format|SAV Format]] - Saved games, 100% identical to world files except a byte in the header.&lt;br /&gt;
* [[ZZT Format]] - World format.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=OPL_chip&amp;diff=12058</id>
		<title>OPL chip</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=OPL_chip&amp;diff=12058"/>
		<updated>2024-11-18T20:45:05Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* BLASTER Environment Variable */ Type 6 is valid for SB16/32/64&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Programmer&#039;s Guide to Yamaha YMF 262/OPL3 FM Music Synthesizer =&lt;br /&gt;
Version 1.00  Nov-24-1994&lt;br /&gt;
&lt;br /&gt;
Written by Vladimir Arnost, QA-Software&lt;br /&gt;
Internet:  xarnos00@dcse.fee.vutbr.cz&lt;br /&gt;
&lt;br /&gt;
This manual can be distributed freely if not modified.&lt;br /&gt;
&lt;br /&gt;
=== Disclaimer ===&lt;br /&gt;
&lt;br /&gt;
I assume no responsibility for any damages arising out of use or inability to use this text. No warranty is provided about correctness of any information in this file. You are on your own.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The chip I am going to describe is getting more and more common, but programming information is still scarce, so I have decided to fill in this gap. All information contained in this file is a result of my experience in Adlib programming, research (read: reverse engineering) and finally of my effort to write down everything necessary to understand and use this piece of hardware. No official sources (i.e. development kits, books about this topic, etc.) were available to me except:&lt;br /&gt;
&lt;br /&gt;
: Adlib Programming Guide - by Tero Töttö, and&lt;br /&gt;
: The PC Games Programmers Encyclopedia V1.0&lt;br /&gt;
&lt;br /&gt;
The information below is a combination of known features of Adlib (alias Yamaha YM 3812/OPL2) and my own uncountable experiments and failures, which brought out a lot of important details you have to know about the chip.&lt;br /&gt;
&lt;br /&gt;
As far as I know, there are four major sound cards based on OPL3 chip:&lt;br /&gt;
&lt;br /&gt;
* Sound Blaster Pro II (not Sound Blaster Pro I)&lt;br /&gt;
* Sound Blaster 16&lt;br /&gt;
* Adlib Gold&lt;br /&gt;
* Pro Audio Spectrum Plus/16&lt;br /&gt;
&lt;br /&gt;
I currently have a Sound Blaster Pro II-compatible card only, so all the programming info I provide will be based on this card. (The other cards are quite similar, however. They are just wired at different I/O-port addresses.)&lt;br /&gt;
&lt;br /&gt;
Note: I assume some knowledge of FM music programming (mainly Adlib FM synthesizer) in this manual. If you are new to this topic I recommend you try Adlib first before going higher. Anyway, OPL3 is a direct descendant of OPL2 (what a surprise), so most features of OPL2 are also present on OPL3.&lt;br /&gt;
&lt;br /&gt;
== Description of the Synthesizer ==&lt;br /&gt;
&lt;br /&gt;
My card&#039;s user manual says: &amp;quot;[this card contains] ... a stereo music FM synthesizer with 20 channels consisting of four (4) operators each ... &amp;quot; I thought: &amp;quot;Wow -- that&#039;s together eighty operators. This must be a GOOD sound-card.&amp;quot; I was wrong. Just another advertising lie.&lt;br /&gt;
&lt;br /&gt;
So let&#039;s clear some facts. First, OPL3 has only thirty-six (36) operators which can be combined in several ways:&lt;br /&gt;
&lt;br /&gt;
* 18 FM channels (36 operators), or&lt;br /&gt;
* 15 FM channels (30 ops) and 5 percussion instruments (6 ops), giving us 20 channels altogether, or&lt;br /&gt;
* up to 6 four-operator FM channels (max 24 ops), the rest again being divided into two-operator FM channels and drums.&lt;br /&gt;
&lt;br /&gt;
From the table above you can see that not all channels can be used in four-operator (4-OP) mode -- only a part of the synthesizer is really capable of making 4-OP sounds -- the rest uses traditional two-operator (2-OP) mode.&lt;br /&gt;
&lt;br /&gt;
Second, the manual states this card is capable of &amp;quot;stereo&amp;quot; music. Yes, the quotes are necessary, because the stereo capabilities are very limited. You are given ability to control output going to left or right channel by turning it on and off. That&#039;s all. So the sound can flow from very left side, center and very right side. No sound panning, no special stereo effects. :-(&lt;br /&gt;
&lt;br /&gt;
Well, flaming apart, back to the main topic.&lt;br /&gt;
&lt;br /&gt;
The OPL3 chip is capable of making sounds in several ways:&lt;br /&gt;
&lt;br /&gt;
=== Two-operator Additive Synthesis ===&lt;br /&gt;
&lt;br /&gt;
Output of both operators is simply added. It is the simplest way to make any sound, and it works on both OPL2 and OPL3. The diagram should make it clear.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	┌────────────┐&lt;br /&gt;
	│            │&lt;br /&gt;
	│ Operator 1 ├────────┐&lt;br /&gt;
	│            │        │&lt;br /&gt;
	└────────────┘        │&lt;br /&gt;
			      ├────────&amp;gt; Output&lt;br /&gt;
	┌────────────┐        │&lt;br /&gt;
	│            │        │&lt;br /&gt;
	│ Operator 2 ├────────┘&lt;br /&gt;
	│            │&lt;br /&gt;
	└────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Two-operator Frequency Modulation (FM) Synthesis ===&lt;br /&gt;
&lt;br /&gt;
Output from the first operator (Modulator) is sent to the input of the second one (Carrier) and is used to modulate (alter) frequency of the second operator. Only the second operator produces sound. Most of interesting sounds are made this way. This also works on OPL2. Hope the picture helps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	┌────────────┐         ┌────────────┐&lt;br /&gt;
	│            │         │            │&lt;br /&gt;
	│ Operator 1 ├────────&amp;gt;│ Operator 2 ├────────&amp;gt; Output&lt;br /&gt;
	│(Modulator) │         │ (Carrier)  │&lt;br /&gt;
	└────────────┘         └────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Four-operator &amp;quot;Mess&amp;quot; Modulation Synthesis ===&lt;br /&gt;
&lt;br /&gt;
All of OPL3&#039;s 4-OP configurations are combinations of the above two modes of synthesis. OPL3 combines these two modes in four ways. I have no words to describe these four ways. Only the pictures can show their principle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   a) FM-FM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐      ┌───────┐      ┌───────┐      ┌───────┐&lt;br /&gt;
	│       │      │       │      │       │      │       │&lt;br /&gt;
	│ Op. 1 ├─────&amp;gt;│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │      │       │      │       │&lt;br /&gt;
	└───────┘      └───────┘      └───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   b) AM-FM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐&lt;br /&gt;
	│       │&lt;br /&gt;
	│ Op. 1 ├───────────────────────────────────┐&lt;br /&gt;
	│       │                                   │&lt;br /&gt;
	└───────┘                                   │&lt;br /&gt;
						    │&lt;br /&gt;
	┌───────┐      ┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │      │       │     │&lt;br /&gt;
	│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────┴─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │      │       │&lt;br /&gt;
	└───────┘      └───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   c) FM-AM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐      ┌───────┐&lt;br /&gt;
	│       │      │       │&lt;br /&gt;
	│ Op. 1 ├─────&amp;gt;│ Op. 2 ├─────┐&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	└───────┘      └───────┘     │&lt;br /&gt;
				     ├─────&amp;gt; Output&lt;br /&gt;
	┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────┘&lt;br /&gt;
	│       │      │       │&lt;br /&gt;
	└───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   d) AM-AM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐&lt;br /&gt;
	│       │&lt;br /&gt;
	│ Op. 1 ├────────────────────┐&lt;br /&gt;
	│       │                    │&lt;br /&gt;
	└───────┘                    │&lt;br /&gt;
				     │&lt;br /&gt;
	┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────┼─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	└───────┘      └───────┘     │&lt;br /&gt;
				     │&lt;br /&gt;
	┌───────┐                    │&lt;br /&gt;
	│       │                    │&lt;br /&gt;
	│ Op. 4 ├────────────────────┘&lt;br /&gt;
	│       │&lt;br /&gt;
	└───────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nice, aren&#039;t they?&lt;br /&gt;
&lt;br /&gt;
The only way I think this can be written is a math formula. Symbol + (plus) means additive synthesis, and * (asterisk) means frequency modulation (Op1 * Op2 means operator 1 modulates operator 2, not vice versa). Here they are:&lt;br /&gt;
&lt;br /&gt;
# FM-FM Mode:	 (Op1 * Op2 * Op3 * Op4) ────&amp;gt; Output&lt;br /&gt;
# AM-FM Mode:	  Op1 + (Op2 * Op3 * Op4) ───&amp;gt; Output&lt;br /&gt;
# FM-AM Mode:	 (Op1 * Op2) + (Op3 * Op4) ──&amp;gt; Output&lt;br /&gt;
# AM-AM Mode:	  Op1 + (Op2 * Op3) + Op4 ───&amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
=== Percussion Mode ===&lt;br /&gt;
&lt;br /&gt;
In this mode 6 operators are used to produce five different percussion instruments:&lt;br /&gt;
&lt;br /&gt;
* Bass Drum (2 operators)&lt;br /&gt;
* Snare Drum (1 operator)&lt;br /&gt;
* Tom-Tom (1 operator)&lt;br /&gt;
* Cymbal (1 operator)&lt;br /&gt;
* Hi-Hat (1 operator)&lt;br /&gt;
&lt;br /&gt;
Based on notes from MAME&#039;s OPL emulator, the following points hold true:&lt;br /&gt;
&lt;br /&gt;
* Setting the block/fnum on each percussive channel may affect multiple instruments.&lt;br /&gt;
** The pitch on channel 6 affects just the bass drum&lt;br /&gt;
** The pitch on channel 7 affects the hihat, cymbal and snare&lt;br /&gt;
** The pitch on channel 8 affects the hihat, cymbal and tomtom&lt;br /&gt;
* The modulator/carrier output level is used to set the volume of each instrument.&lt;br /&gt;
** channel 6 carrier controls the volume of the bass drum&lt;br /&gt;
** channel 7 modulator controls the volume of the hi-hat&lt;br /&gt;
** channel 7 carrier controls the volume of the snare&lt;br /&gt;
** channel 8 modulator controls the volume of the tomtom&lt;br /&gt;
** channel 8 carrier controls the volume of the cymbal&lt;br /&gt;
* Panning L/R bits set via register 0xC0 affect instruments as follows:&lt;br /&gt;
** channel 6 affects the bass drum&lt;br /&gt;
** channel 7 affects hi-hat and snare&lt;br /&gt;
** channel 8 affects cymbal and tomtom&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;AdLib Programmer&#039;s Manual&#039;&#039; contains playback code that uses the Tom-Tom frequency for all percussion instruments.  It is possible this is the source of the confusion.  Here, when a note is played on the Tom-Tom channel, that note will of course cause the Top Cymbal to change as well because of the shared channel.  But the code increases this pitch by seven semitones and sets that frequency for channel 7 at the same time, ensuring the Hi-Hat and Snare Drum are always set to seven semitones above the last Tom-Tom note.  (See [[AdLib MIDI Format]] for details.)&lt;br /&gt;
&lt;br /&gt;
This mode is identical with that of OPL2. For more details see ADLIB.DOC.&lt;br /&gt;
&lt;br /&gt;
== Programming the Synthesizer ==&lt;br /&gt;
&lt;br /&gt;
OPL3 may be found at the following addresses:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Sound Blaster Pro II || 220h or 240h (selectable), also 388h&lt;br /&gt;
|-&lt;br /&gt;
| Adlib Gold || 388h&lt;br /&gt;
|-&lt;br /&gt;
| Pro Audio Spectrum Plus/16 || ? (if you have a PAS you should know it)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The base address of the synthesizer will be called &amp;quot;base&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The chip occupies four I/O addresses:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| base+0 || Primary index register (write), Status register (read)&lt;br /&gt;
|-&lt;br /&gt;
| base+1 || Primary data register (write-only)&lt;br /&gt;
|-&lt;br /&gt;
| base+2 || Secondary index register (write)&lt;br /&gt;
|-&lt;br /&gt;
| base+3 || Secondary data register (write-only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The index registers are used to select internal registers and data registers are used to write to them. Status register returns the state of two timers built in the chip.&lt;br /&gt;
&lt;br /&gt;
OPL3 contains two sets of registers. The Primary set maps to channels 0-8 (operators 0-17) and the secondary maps to channels 9-17 (operators 18-35). The reason for this is simple: all these registers wouldn&#039;t fit into single register set.&lt;br /&gt;
&lt;br /&gt;
Unlike Adlib (OPL2), OPL3 doesn&#039;t need delay between register writes. With OPL2 you had to wait 3.3 µs after index register write and another 23 µs after data register write. On the contrary OPL3 doesn&#039;t need (almost) any delay after index register write and only 0.28 µs after data register write. This means you can neglect the delays and slightly speed up your music driver. But using reasonable delays will certainly do no harm.&lt;br /&gt;
&lt;br /&gt;
The data registers can&#039;t be read (they are write-only) on both OPL2 and OPL3.&lt;br /&gt;
&lt;br /&gt;
== Register Map ==&lt;br /&gt;
&lt;br /&gt;
The registers are grouped in the same manner as in the OPL2 chip. Programs using both OPL2 and OPL3 chips may use the same code provided that their direct I/O interface is well written. The only thing you have to change is operator-to-register mapping, which must accomodate the fact that registers are spread between two register sets.&lt;br /&gt;
&lt;br /&gt;
(The register map is nearly the same so I dared to copy it from ADLIB.DOC.)&lt;br /&gt;
&lt;br /&gt;
=== Status Register (base+0) ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
!    D7   !!   D6   !!   D5   !!   D4   !!   D3   !!   D2   !!   D1   !!   D0&lt;br /&gt;
|-&lt;br /&gt;
| IRQFlag || T1Flag || T2Flag ||        ||        ||        ||        ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Data Registers (base+1, base+3) ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! REG   !!   D7   !!   D6   !!   D5   !!   D4   !!   D3   !!   D2   !!   D1   !!   D0&lt;br /&gt;
|-&lt;br /&gt;
| 01    ||colspan=2| Test Register ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|(WSEnable)||colspan=5| Test Register&lt;br /&gt;
|-&lt;br /&gt;
| 02    ||colspan=8| Timer 1 Count (80 µsec resolution)&lt;br /&gt;
|-&lt;br /&gt;
| 03    ||colspan=8| Timer 2 Count (320 µsec resolution)&lt;br /&gt;
|-&lt;br /&gt;
| 04*   ||IRQReset|| T1Mask || T2Mask ||colspan=3|                  ||T2 Start||T1 Start&lt;br /&gt;
|-&lt;br /&gt;
| 04**  ||colspan=2|        ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP B-E||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP A-D||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 9-C||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 2-5||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 1-4||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 0-3&lt;br /&gt;
|-&lt;br /&gt;
| 05**  ||colspan=7|                                                           ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;| OPL3&lt;br /&gt;
|-&lt;br /&gt;
| 08    ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;| (CSW)  ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|NOTE-SEL||colspan=6|&lt;br /&gt;
|-&lt;br /&gt;
| 20-35 ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Tremolo ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Vibrato ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Sustain ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|  KSR   ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Frequency Multiplication Factor&lt;br /&gt;
|-&lt;br /&gt;
| 40-55 ||colspan=2 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Key Scale Level ||colspan=6 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 60-75 ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Attack Rate ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 80-95 ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Sustain Level ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| A0-A8 ||colspan=8 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Frequency Number  (Lower 8 bits)&lt;br /&gt;
|-&lt;br /&gt;
| B0-B8 ||colspan=2|        ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| KEY-ON ||colspan=3 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Block Number ||colspan=2 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| F-Num (hi bits)&lt;br /&gt;
|-&lt;br /&gt;
| BD*   ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|Trem Dep||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|Vibr Dep||style=&amp;quot;background-color: #FFCCDD;&amp;quot;|PercMode||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| BD On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| SD On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| TT On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| CY On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| HH On&lt;br /&gt;
|-&lt;br /&gt;
| C0-C8 ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| OutCh_D ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| OutCh_C ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Right  ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Left   ||colspan=3 style=&amp;quot;background-color: #FFE0CC;&amp;quot;|FeedBack Modulation Factor||style=&amp;quot;background-color: #FFE0CC;&amp;quot;|SynthTyp&lt;br /&gt;
|-&lt;br /&gt;
| E0-F5 ||colspan=5|                                      ||colspan=3 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;background-color: #CCFFCC;&amp;quot;| Chip-wide setting&lt;br /&gt;
|style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Per operator&lt;br /&gt;
|style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Per channel&lt;br /&gt;
|style=&amp;quot;background-color: #FFCCDD;&amp;quot;| Rhythm-mode only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; This applies only to port base+1 (OPL2)&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; This applies only to port base+3 (OPL3, second register set)&lt;br /&gt;
&lt;br /&gt;
For register bases A0, B0 and C0 there is one register per output channel. The primary register set holds the first nine channels (0-8) and the secondary holds last nine channels (9-17). For bases 20, 40, 60, 80 and E0 there are two registers per channel. Each register maps to one operator. Unfortunately the operator&#039;s register numbers are not continuous. The following table shows which operator maps to which register set and offset (in hex).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Op. !! Set/Offset !! Op. !! Set/Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0  || 0/00 || 18 || 1/00&lt;br /&gt;
|-&lt;br /&gt;
| 1  || 0/01 || 19 || 1/01&lt;br /&gt;
|-&lt;br /&gt;
| 2  || 0/02 || 20 || 1/02&lt;br /&gt;
|-&lt;br /&gt;
| 3  || 0/03 || 21 || 1/03&lt;br /&gt;
|-&lt;br /&gt;
| 4  || 0/04 || 22 || 1/04&lt;br /&gt;
|-&lt;br /&gt;
| 5  || 0/05 || 23 || 1/05&lt;br /&gt;
|-&lt;br /&gt;
| 6  || 0/08 || 24 || 1/08&lt;br /&gt;
|-&lt;br /&gt;
| 7  || 0/09 || 25 || 1/09&lt;br /&gt;
|-&lt;br /&gt;
| 8  || 0/0A || 26 || 1/0A&lt;br /&gt;
|-&lt;br /&gt;
| 9  || 0/0B || 27 || 1/0B&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 0/0C || 28 || 1/0C&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 0/0D || 29 || 1/0D&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 0/10 || 30 || 1/10&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 0/11 || 31 || 1/11&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 0/12 || 32 || 1/12&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 0/13 || 33 || 1/13&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 0/14 || 34 || 1/14&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 0/15 || 35 || 1/15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following tables summarize which operators form a channel in various modes:&lt;br /&gt;
&lt;br /&gt;
1. Two-operator Melodic Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel    !! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 6 || 7  || 8  || 12 || 13 || 14 || 18 || 19 || 20 || 24 || 25 || 26 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 9 || 10 || 11 || 15 || 16 || 17 || 21 || 22 || 23 || 27 || 28 || 29 || 33 || 34 || 35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
2. Two-operator Melodic and Percussion Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! BD !! SD !! TT !! CY !! HH !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 6 || 7  || 8  || 12 || 16 || 14 || 17 || 13 || 18 || 19 || 20 || 24 || 25 || 26 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 9 || 10 || 11 || 15 ||colspan=4| - || 21 || 22 || 23 || 27 || 28 || 29 || 33 || 34 || 35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
3. Four-operator Melodic Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 12 || 13 || 14 || 18 || 19 || 20 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 15 || 16 || 17 || 21 || 22 || 23 || 33 || 34 || 35&lt;br /&gt;
|-&lt;br /&gt;
| Operator 3 || 6 || 7 || 8 ||colspan=3| - || 24 || 25 || 26 ||colspan=3| -&lt;br /&gt;
|-&lt;br /&gt;
| Operator 4 || 9 || 10 || 11 ||colspan=3| - || 27 || 28 || 29 ||colspan=3| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channels 3, 4, 5 and 12, 13, 14 can&#039;t be used separately because their operators became part of channels 0, 1, 2 and 9, 10, 11 respectively. For instance a four-operator channel 1 consists of two two-operator channels number 1 and 4. (The second 2-OP channel number is always the first 2-OP channel number plus three.)&lt;br /&gt;
&lt;br /&gt;
OPL3 allows you to enable/disable 4-OP mode separately for any of channels 0, 1, 2, 9, 10 and 11 (see register 104h in the reference below). This means for instance when you switch only channel 2 into 4-OP mode, channels number 0, 1, 3, 4, 6, 7, 8, 9, etc. will be still independent 2-OP channels.&lt;br /&gt;
&lt;br /&gt;
Channels 6, 7, 8 and 15, 16, 17 are always two-operator ones. They can&#039;t be grouped to form four-operator channels.&lt;br /&gt;
&lt;br /&gt;
4. Four-operator Melodic and Percussion Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! BD !! SD !! TT !! CY !! HH !! 9 !! 10 !! 11 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 12 || 16 || 14 || 17 || 13 || 18 || 19 || 20 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 15 ||colspan=4| - || 21 || 22 || 23 || 33 || 34 || 35&lt;br /&gt;
|-&lt;br /&gt;
| Operator 3 || 6 || 7 || 8 ||colspan=5| - || 24 || 25 || 26 ||colspan=3| -&lt;br /&gt;
|-&lt;br /&gt;
| Operator 4 || 9 || 10 || 11 ||colspan=5| - || 27 || 28 || 29 ||colspan=3| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
Two-operator channel #14 consists of operators 26 and 29 which occupy these registers (all are in the secondary register set):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 12A || Operator 1 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 12D || Operator 2 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 14A || Operator 1 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 14D || Operator 2 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 16A || Operator 1 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 16D || Operator 2 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 18A || Operator 1 ||Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 18D || Operator 2 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 1A5 ||            || Frequency Number (low)&lt;br /&gt;
|-&lt;br /&gt;
| 1B5 ||            || Key On/Block Number/Frequency Number (high)&lt;br /&gt;
|-&lt;br /&gt;
| 1C5 ||            || FeedBack/Synthesis Type&lt;br /&gt;
|-&lt;br /&gt;
| 1EA || Operator 1 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| 1ED || Operator 2 || Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Four-operator channel #1 consists of operators 1, 4, 7 and 10. All registers except register 104h are in the primary set:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 104 || bit 1 = 1  || Enable Four-Operator Synthesis in channel #1&lt;br /&gt;
|-&lt;br /&gt;
| 21 || Operator 1 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 24 || Operator 2 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 29 || Operator 3 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 2C || Operator 4 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 41 || Operator 1 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 44 || Operator 2 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 49 || Operator 3 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 4C || Operator 4 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 61 || Operator 1 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 64 || Operator 2 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 69 || Operator 3 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 6C || Operator 4 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 81 || Operator 1 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 84 || Operator 2 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 89 || Operator 3 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 8C || Operator 4 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| A1 ||            || Frequency Number (low)&lt;br /&gt;
|-&lt;br /&gt;
| A4 ||            || Unused&lt;br /&gt;
|-&lt;br /&gt;
| B1 ||            || Key On/Block Number/Frequency Number (high)&lt;br /&gt;
|-&lt;br /&gt;
| B4 ||            || Unused&lt;br /&gt;
|-&lt;br /&gt;
| C1 ||            || FeedBack/Synthesis Type (part 1)&lt;br /&gt;
|-&lt;br /&gt;
| C4 ||            || Synthesis Type (part 2)&lt;br /&gt;
|-&lt;br /&gt;
| E1 || Operator 1 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| E4 || Operator 2 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| E9 || Operator 3 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| EC || Operator 4 || Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
NOTE: If a register number is greater than 100h, then it belongs into the secondary register set. (I use this numbering to emphasize the fact that the particular register MUST be written to the secondary set.) See the example code below for details.&lt;br /&gt;
&lt;br /&gt;
== OPL3 Register Reference ==&lt;br /&gt;
&lt;br /&gt;
Because the registers of OPL3 are almost the same as of OPL2, I have copied their descriptions from file ADLIB.DOC.&lt;br /&gt;
&lt;br /&gt;
=== Status Register ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || T1 || T2 ||colspan=5| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: IRQ Flag. Set whenever any timer has elapsed.&lt;br /&gt;
* bit 6: Timer 1 Flag. Set every time the preset time in Timer 1 has elapsed.&lt;br /&gt;
* bit 5: Timer 2 Flag. Set every time the preset time in Timer 2 has elapsed.&lt;br /&gt;
&lt;br /&gt;
Timer interrupts are not wired to any IRQ (why??). The timers can be used to detect the OPL2/OPL3 chip (see Appendix B).&lt;br /&gt;
&lt;br /&gt;
=== Data Registers ===&lt;br /&gt;
&lt;br /&gt;
==== 01: Test Register / Waveform Select Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| Test Register&lt;br /&gt;
| (WSE)&lt;br /&gt;
|colspan=5| Test Register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 7-6: Test Register. Must be reset to zero before any operation.&lt;br /&gt;
* bit 5: Waveform Select Enable. If clear, all channels will use normal sine wave. If set, register E0-F5 (Waveform Select) contents will be used.&lt;br /&gt;
* bits 0-4: Test Register. Must be reset to zero before any operation.&lt;br /&gt;
&lt;br /&gt;
OPL3 does not implement WSE bit, and it should be left clear. In OPL2 mode all four waveforms are always available, and in OPL3 mode all eight waveforms are always available. For compatibility with OPL2, when a program is finished using an OPL3, the waveform select registers should be set to 0, if the next program assumes that by setting WSE bit to 0 the waveform is always sine like on a real OPL2.&lt;br /&gt;
&lt;br /&gt;
==== 02: Timer 1 Count ====&lt;br /&gt;
&lt;br /&gt;
Upward 8 bit counter with a resolution of 80 µsec. If an overflow occurs, the status register bit is set, and the preset value is loaded into the timer again.&lt;br /&gt;
&lt;br /&gt;
==== 03: Timer 2 Count ====&lt;br /&gt;
&lt;br /&gt;
Same as Timer 1, but with a resolution of 320 µsec.&lt;br /&gt;
&lt;br /&gt;
==== 004 (port: base+1): IRQ-Reset / Mask / Start ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Rst&lt;br /&gt;
| T1M&lt;br /&gt;
| T2M&lt;br /&gt;
|colspan=3| -&lt;br /&gt;
| T2S&lt;br /&gt;
| T1S&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: IRQ-Reset. Resets timer and IRQ flags in status register. All other bits are ignored when this bit is set.&lt;br /&gt;
* bit 6: Timer 1 Mask. If 1, status register is not affected in overflow.&lt;br /&gt;
* bit 5: Timer 2 Mask. Same as above.&lt;br /&gt;
* bit 1: Timer 2 Start. Timer on/off.&lt;br /&gt;
* bit 0: Timer 1 Start. Same as above.&lt;br /&gt;
&lt;br /&gt;
==== 104 (port: base+3): Four-Operator Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| -&lt;br /&gt;
| ChB&lt;br /&gt;
| ChA&lt;br /&gt;
| Ch9&lt;br /&gt;
| Ch2&lt;br /&gt;
| Ch1&lt;br /&gt;
| Ch0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 5: Enable four-operator synthesis for channel pair 11 - 14 (decimal).&lt;br /&gt;
* bit 4: Same as above for channel pair 10 - 13.&lt;br /&gt;
* bit 3: Same as above for channel pair 9 - 12.&lt;br /&gt;
* bit 2: Same as above for channel pair 2 - 5.&lt;br /&gt;
* bit 1: Same as above for channel pair 1 - 4.&lt;br /&gt;
* bit 0: Same as above for channel pair 0 - 3.&lt;br /&gt;
&lt;br /&gt;
If reset to zero, OPL3 can produce 18 two-operator sounds at a time. If nonzero, OPL3 produces four-operator sound in appropriate channel pair.&lt;br /&gt;
&lt;br /&gt;
==== 105 (port: base+3): OPL3 Mode Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=7| -&lt;br /&gt;
| OPL3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 0: OPL3 Mode Enable. When set, OPL3 extensions (36 operators, 4-OP synthesis, 8 waveforms, stereo output) can be used. When reset, the chip behaves as an ordinary OPL2. This bit is zero by default for compatibility with OPL2.&lt;br /&gt;
&lt;br /&gt;
==== 08: CSW / NOTE-SEL ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| (CSW)&lt;br /&gt;
| N-S&lt;br /&gt;
|colspan=6| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: Composite sine wave mode on/off. All KEY-ON bits must be clear in order to use this mode. The card is unable to create any other sound when in CSW mode. (Unfortunately, I have no info how to use this mode :-&amp;lt; ). The CSW mode is not implemented on an OPL3 and this bit is ignored.&lt;br /&gt;
* bit 6: NOTE-SEL. Controls the split point of the keyboard. When 0, the keyboard split is the second bit from the bit 8 of the F-Number. When 1, the MSb of the F-Number is used. (???)&lt;br /&gt;
&lt;br /&gt;
The Note Select bit defines what kind of F-NUM values are used within an octave so the chip knows how to split an octave into two parts. When Note Select bit is 0, F-NUM values used within an octave all have their MSB bit (bit 9) set, ranging from 0x200 to 0x3FF, so the second most significant bit, bit 8 is used to determine if currently playing note belongs to lower (0x200-0x2FF) or upper (0x300-0x3FF) half within an octave. When Note Select bit is 1, the F-NUM value MSB bit, bit 9, is used to determine if the note belongs to lower (0x000-0x1FF) or upper (0x200-0x3FF) half within an octave.&lt;br /&gt;
&lt;br /&gt;
==== 20-35: Tremolo / Vibrato / Sustain / KSR / Frequency Multiplication Factor ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Tre&lt;br /&gt;
| Vib&lt;br /&gt;
| Sus&lt;br /&gt;
| KSR&lt;br /&gt;
|colspan=4| Multiplication&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7:    Tremolo (Amplitude vibrato) on/off.&lt;br /&gt;
* bit 6:    Frequency vibrato on/off.&lt;br /&gt;
* bit 5:    Sound Sustaining. When 1, operator&#039;s output level will be held at its sustain level until a KEY-OFF is done.&lt;br /&gt;
* bit 4:    Envelope scaling (KSR) on/off. When 1, higher notes are shorter than lower notes.&lt;br /&gt;
* bits 0-3: Frequency Multiplication Factor (MULTI). Operator&#039;s frequency is set to (see registers A0, B0) F-Number * Factor.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! MULTI !! Factor&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 5&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 40-55: Key Scale Level / Output Level ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| KSL&lt;br /&gt;
|colspan=6| Output level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 6-7: Key Scale Level. Attenuates output level towards higher pitch:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! KSL !! Attenuation&lt;br /&gt;
|-&lt;br /&gt;
| 0 || -&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3.0 dB/oct&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1.5 dB/oct&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 6.0 dB/oct&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The attenuation level is based on the 3-bit octave (block number) value and top four bits of the FNUM value, so each octave is subdivided into 16 parts.&lt;br /&gt;
&lt;br /&gt;
* bits 0-5: Output Level. Attenuates the operator output level. 0 is the loudest, 3F is the softest. Attenuation range is 48dB with 0.75dB resolution.&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| 24dB || 12dB || 6dB || 3dB || 1.5dB || 0.75dB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In additive synthesis, varying the output level of any operator varies the volume of its corresponding channel. In FM synthesis, varying the output level of the carrier varies the volume of the channel. Varying the output of the modulator will change the frequency spectrum produced by the carrier. The following table summarizes which operators&#039; output levels should be updated when trying to change channel output level.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! Mode !! Op 1 !! Op 2 !! Op 3 !! Op 4&lt;br /&gt;
|-&lt;br /&gt;
| AM    || Y || Y || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| FM    || - || Y || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| FM-FM || - || - || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| AM-FM || Y || - || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| FM-AM || - || Y || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| AM-AM || Y || - || Y   || Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 60-75: Attack Rate / Decay Rate ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=4| Attack rate&lt;br /&gt;
|colspan=4| Decay rate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 4-7: Attack Rate. Determines the rising time for the sound. The higher the value, the faster the attack. If value is 0, the sound will never attack, and if value is 15, the volume jumps directly from minimum to maximum.&lt;br /&gt;
* bits 0-3: Decay Rate. Determines the diminishing time for the sound. The higher the value, the shorter the decay. If value is 0, the sound does not decay towards sustain level and stays at maximum volume after attack.&lt;br /&gt;
&lt;br /&gt;
==== 80-95: Sustain Level / Release Rate ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=4| Sustain level&lt;br /&gt;
|colspan=4| Release rate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 4-7: Sustain Level. Determines the point at which the sound ceases to decay and chages to a sound having a constant level. The sustain level is expressed as a fraction of the maximum level. 15 is the softest and 0 is the loudest sustain level. Note that the Sustain-bit in the register 20-35 must be set for this to have an effect. Otherwise the sound will continue with release phase after hitting sustain level.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! SL3 !! SL2 !! SL1 !! SL0&lt;br /&gt;
|-&lt;br /&gt;
| -24dB || -12dB || -6dB || -3dB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is an exception when all bits are set (value=15), the actual level is -93dB instead, matching as if the value were 31.&lt;br /&gt;
&lt;br /&gt;
* bits 0-3: Release Rate. Determines the rate at which the sound disappears after KEY-OFF. The higher the value, the shorter the release. Value of 0 causes the sound not to release at all, it will continue to produce sound at level before KEY-OFF.&lt;br /&gt;
&lt;br /&gt;
Some songs (e.g. &amp;lt;tt&amp;gt;LAME intro tune for Xerox of INC.raw&amp;lt;/tt&amp;gt;) set the sustain and release values to the shortest (0xFF) while the note is still playing in order to immediately silence a note that would otherwise linger after keyoff.&lt;br /&gt;
&lt;br /&gt;
==== A0-A8: Frequency Number ====&lt;br /&gt;
&lt;br /&gt;
Determines the pitch of the note. Highest bits of F-Number are stored in the register below.&lt;br /&gt;
&lt;br /&gt;
==== B0-B8: Key On / Block Number / F-Number(hi bits) ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| -&lt;br /&gt;
| Note on&lt;br /&gt;
|colspan=3| Block number&lt;br /&gt;
|colspan=2| Frequency num.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;note on&#039;&#039;&#039; bit is set to 1 to play a note on the channel, and 0 to silence the note.  Setting this value to 1 when a note is already playing has no effect (it does not retrigger the note.)&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;block number&#039;&#039;&#039; is often referred to as the octave, but this is a misleading description.  The value of the block controls the frequency range spanned by the frequency numbers.  A larger block allows higher frequencies (pitch) to be reached, at the expense of there being a greater difference in pitch of two adjacent frequency numbers.  This works out well, since a low block number allows a very high pitch accuracy for deep notes where it is most noticeable, while high block numbers mean the coarse pitch settings need only be used at high frequencies where the coarseness is unnoticeable.&lt;br /&gt;
&lt;br /&gt;
The following table illustrates the effect of different block numbers.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=2| Block !!colspan=2| Note frequency !!rowspan=2| Difference between&amp;lt;br/&amp;gt;adjacent notes (Hz)&lt;br /&gt;
|-&lt;br /&gt;
! F-num=1 !! F-num=1023&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 0 ||align=right| 0.047 Hz ||align=right| 48.503 Hz ||align=right| 0.048 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 1 ||align=right| 0.094 Hz ||align=right| 97.006 Hz ||align=right| 0.095 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 2 ||align=right| 0.189 Hz ||align=right| 194.013 Hz ||align=right| 0.190 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 3 ||align=right| 0.379 Hz ||align=right| 388.026 Hz ||align=right| 0.379 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 4 ||align=right| 0.758 Hz ||align=right| 776.053 Hz ||align=right| 0.759 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 5 ||align=right| 1.517 Hz ||align=right| 1,552.107 Hz ||align=right| 1.517 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 6 ||align=right| 3.034 Hz ||align=right| 3,104.215 Hz ||align=right| 3.034 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 7 ||align=right| 6.068 Hz ||align=right| 6,208.431 Hz ||align=right| 6.069 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This shows that block 7 is capable of reaching the highest note (6.2kHz) but since there are 6Hz between notes the accuracy suffers.  Note A-4 is 440Hz but in this block, the two closest frequency numbers are 72 and 73, which create tones at 437Hz and 443Hz respectively, neither of which is particularly accurate.  Blocks 3 and below are unable to reach as high as 440Hz, but block 4 can.  With block 4, frequency numbers 579 and 580 produce 439.4Hz and 440.2Hz, considerably closer to the intended frequency.&lt;br /&gt;
&lt;br /&gt;
In other words, when calculating notes, the best accuracy is achieved by selecting the lowest possible block number that can reach the desired note frequency.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;frequency number&#039;&#039;&#039; is split between registers A0 and B0, with the upper two bits being stored here.  The full frequency number is a value between 0 and 1023 inclusive.  The following formula is used to determine the frequency number for a given note frequency (in Hertz) and block:&lt;br /&gt;
&lt;br /&gt;
: f-num = freq * 2^(20 - block) / 49716&lt;br /&gt;
&lt;br /&gt;
This formula can produce frequency numbers outside of the allowed 0-1023 range if the block number is too low, or the frequency is higher than the hardware can produce.&lt;br /&gt;
&lt;br /&gt;
The sampling frequency of OPL2 and OPL3 chips is approximately 49716 Hz, leading to the constant in the formula.  Occasionally this is rounded to 50000 leading to a small pitch variation if the wrong constant is used to play these songs.  OPL2 cards like Adlib and early Sound Blasters used the 14.31818 MHz oscillator signal from ISA bus slot and divided it by four on card, thus running the OPL2 chip at 3.579545 MHz, which gets divided internally by 72 to get the sampling rate. OPL3 cards had to be compatible, and mostly the sound cards have separate 14.31818 MHz oscillator on board which the OPL3 uses directly, and this gets divided internally by 288 to get the sampling rate.&lt;br /&gt;
&lt;br /&gt;
NOTE: In four-operator mode only the register value of Operators 1 and 2 is used, value of Operators 3 and 4 in this register is ignored. In other words: one channel uses only one frequency, block and KEY-ON value at a time, regardless whether it is a two- or four-operator channel.&lt;br /&gt;
&lt;br /&gt;
Setting the frequency and/or block has an immediate effect, regardless of the state of the &#039;&#039;note on&#039;&#039; bit. By changing the values gradually, pitch bends can be achieved.&lt;br /&gt;
&lt;br /&gt;
{{TODO|Is a delay needed between setting the keyon bit to 0 and then back to 1 to retrigger a note?}}&lt;br /&gt;
&lt;br /&gt;
==== BD: Tremolo Depth / Vibrato Depth / Percussion Mode / BD/SD/TT/CY/HH On ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Tre&lt;br /&gt;
| Vib&lt;br /&gt;
| Per&lt;br /&gt;
| BD&lt;br /&gt;
| SD&lt;br /&gt;
| TT&lt;br /&gt;
| CY&lt;br /&gt;
| HH&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7:    Tremolo (Amplitude Vibrato) Depth. 0 = 1.0dB, 1 = 4.8dB.&lt;br /&gt;
* bit 6:    Frequency Vibrato Depth. 0 = 7 cents, 1 = 14 cents. A &amp;quot;cent&amp;quot; is 1/100 of a semi-tone.&lt;br /&gt;
* bit 5:    Percussion Mode. 0 = Melodic Mode, 1 = Percussion Mode.&lt;br /&gt;
* bit 4:    BD On. KEY-ON of the Bass Drum channel.&lt;br /&gt;
* bit 3:    SD On. KEY-ON of the Snare Drum channel.&lt;br /&gt;
* bit 2:    TT On. KEY-ON of the Tom-Tom channel.&lt;br /&gt;
* bit 1:    CY On. KEY-ON of the Cymbal channel.&lt;br /&gt;
* bit 0:    HH On. KEY-ON of the Hi-Hat channel.&lt;br /&gt;
&lt;br /&gt;
NOTE: KEY-ON bits of channels 6, 7 and 8 must be clear and their F-Nums, Attack/Decay/Release rates, etc. must be set properly to use percussion mode.&lt;br /&gt;
&lt;br /&gt;
This register only exists in the first register set (OPL2) and does not exist in the second register set (OPL3 upper registers).  Rhythm mode only affects the lower register set, the upper registers are not affected by rhythm mode.&lt;br /&gt;
&lt;br /&gt;
{{TODO|On an OPL3, does the value set here apply to all 18 channels or only the OPL2-compatible first 9 channels?}}&lt;br /&gt;
&lt;br /&gt;
==== C0-C8: FeedBack Modulation Factor / Synthesis Type ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| OutCh_D&lt;br /&gt;
| OutCh_C&lt;br /&gt;
| R&lt;br /&gt;
| L&lt;br /&gt;
|colspan=3| Feedback&lt;br /&gt;
| Syn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: CHD, Output Channel D Enable. When set, channel output goes to fourth digital audio output channel.&lt;br /&gt;
* bit 6: CHC, Output Channel C Enable. When set, channel output goes to third digital audio output channel.&lt;br /&gt;
* bit 5:    Right Speaker Enable. When set, channel output goes to second digital audio output channel, connected to right speaker.&lt;br /&gt;
* bit 4:    Left Speaker Enable. When set, channel output goes to first digital audio output channel, connected to left speaker.&lt;br /&gt;
** In OPL3 mode, at least one of the left/right bits must be set to hear the channel.&lt;br /&gt;
** In OPL2 mode, these bits are ignored and audio is sent to all channels for compatibility reasons.&lt;br /&gt;
** Left/Right bits can be used to realize sound &amp;quot;panning&amp;quot;, but this method offers only three pan positions (left/center/right).&lt;br /&gt;
** These bits apply only to operators producing sound (Carriers). Modulators are not affected by their setting.&lt;br /&gt;
** Sound cards use only one stereo DAC, so only two of the four digital output channels are available.&lt;br /&gt;
* bits 1-3: FeedBack Modulation Factor. If 0, no feedback is present. If 1-7, operator 1 will send a portion of its output back into itself.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! FeedBack !! Factor&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;amp;pi;/16&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;amp;pi;/8&lt;br /&gt;
|-&lt;br /&gt;
| 3 || &amp;amp;pi;/4&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;amp;pi;/2&lt;br /&gt;
|-&lt;br /&gt;
| 5 || &amp;amp;pi;&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 2&amp;amp;pi;&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 4&amp;amp;pi;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When in four-operator mode, the FeedBack value is used only by Operator 1, value of Operators 2, 3 and 4 is ignored.&lt;br /&gt;
&lt;br /&gt;
* bit 0: Synthesis Type. 1 = Additive synthesis, 0 = Frequency Modulation.  In four-operator mode, there are two bits controlling the synthesis type. Both are the bit 0 of register C0, one of Operators 1 and 2 and the second of Operators 3 and 4.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! Op 1&amp;amp;2 !! Op 3&amp;amp;4 !! Type&lt;br /&gt;
|-&lt;br /&gt;
| 0 || NONE || FM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || NONE || AM&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || FM-FM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || AM-FM&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || FM-AM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || AM-AM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== E0-F5: Waveform Select ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5| -&lt;br /&gt;
|colspan=3| Waveform&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 0-2: WaveForm Select (WS): &amp;lt;gallery widths=300px heights=150px perrow=4&amp;gt;&lt;br /&gt;
Image:OPL_Wave0_Digital.svg|Waveform 0: Sine&lt;br /&gt;
Image:OPL_Wave1_Digital.svg|Waveform 1: Half-sine&lt;br /&gt;
Image:OPL_Wave2_Digital.svg|Waveform 2: Abs-sine&lt;br /&gt;
Image:OPL_Wave3_Digital.svg|Waveform 3: Pulse-sine&lt;br /&gt;
Image:OPL_Wave4_Digital.svg|Waveform 4: Sine - even periods only&lt;br /&gt;
Image:OPL_Wave5_Digital.svg|Waveform 5: Abs-sine - even periods only&lt;br /&gt;
Image:OPL_Wave6_Digital.svg|Waveform 6: Square&lt;br /&gt;
Image:OPL_Wave7_Digital.svg|Waveform 7: Derived square&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* NOTE: Bit 5 of register 01 must be set to use waveforms other than sine. Waveforms 4-7 are available only on OPL3.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
These examples show a few working routines used in my MUS Player. They are written in Borland C++ 3.1 but should be easy to translate to any other language.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
// I prefer using these Assembler-like types&lt;br /&gt;
typedef unsigned int  WORD;&lt;br /&gt;
typedef unsigned char BYTE;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * FM Synthesizer base port. SB Pro II - 0x220, Adlib 0x388&lt;br /&gt;
 */&lt;br /&gt;
WORD FMport = 0x220;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Enables OPL3 extensions.&lt;br /&gt;
 */&lt;br /&gt;
WORD OPL3 = 1;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Direct write to any Adlib/SB Pro II FM synthetiser register.&lt;br /&gt;
 *   reg - register number (range 0x001-0x0F5 and 0x101-0x1F5). When high byte&lt;br /&gt;
 *         of reg is zero, data go to port FMport, otherwise to FMport+2&lt;br /&gt;
 *   data - register value to be written&lt;br /&gt;
 */&lt;br /&gt;
BYTE FMwriteReg(WORD reg, BYTE data)&lt;br /&gt;
{&lt;br /&gt;
    asm {&lt;br /&gt;
	mov	dx,FMport&lt;br /&gt;
	mov	ax,reg&lt;br /&gt;
	or	ah,ah		// high byte is nonzero -- write to port base+2&lt;br /&gt;
	jz	out1&lt;br /&gt;
	inc	dx&lt;br /&gt;
	inc	dx&lt;br /&gt;
    }&lt;br /&gt;
out1: asm {&lt;br /&gt;
	out	dx,al&lt;br /&gt;
	mov	cx,6&lt;br /&gt;
    }&lt;br /&gt;
loop1:asm {			// delay between writes&lt;br /&gt;
	in	al,dx&lt;br /&gt;
	loop	loop1&lt;br /&gt;
&lt;br /&gt;
	inc	dx&lt;br /&gt;
	mov	al,data&lt;br /&gt;
	out	dx,al&lt;br /&gt;
	dec	dx&lt;br /&gt;
	mov	cx,36&lt;br /&gt;
    }&lt;br /&gt;
loop2:asm {			// delay after data write&lt;br /&gt;
	in	al,dx&lt;br /&gt;
	loop	loop2&lt;br /&gt;
    }&lt;br /&gt;
    return _AL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Write to an operator pair. To be used for register bases of 0x20, 0x40,&lt;br /&gt;
 * 0x60, 0x80 and 0xE0.&lt;br /&gt;
 */&lt;br /&gt;
void FMwriteChannel(BYTE regbase, BYTE channel, BYTE data1, BYTE data2)&lt;br /&gt;
{&lt;br /&gt;
    static BYTE adlib_op[] = {0, 1, 2, 8, 9, 10, 16, 17, 18};&lt;br /&gt;
    static BYTE sbpro_op[] = { 0,  1,  2,   6,  7,  8,  12, 13, 14,&lt;br /&gt;
			      18, 19, 20,  24, 25, 26,  30, 31, 32};&lt;br /&gt;
    static WORD rg[] = {0x000,0x001,0x002,0x003,0x004,0x005,&lt;br /&gt;
			0x008,0x009,0x00A,0x00B,0x00C,0x00D,&lt;br /&gt;
			0x010,0x011,0x012,0x013,0x014,0x015,&lt;br /&gt;
			0x100,0x101,0x102,0x103,0x104,0x105,&lt;br /&gt;
			0x108,0x109,0x10A,0x10B,0x10C,0x10D,&lt;br /&gt;
			0x110,0x111,0x112,0x113,0x114,0x115};&lt;br /&gt;
&lt;br /&gt;
    if (OPL3)&lt;br /&gt;
    {&lt;br /&gt;
	register WORD reg = sbpro_op[channel];&lt;br /&gt;
	FMwriteReg(rg[reg]+regbase, data1);&lt;br /&gt;
	FMwriteReg(rg[reg+3]+regbase, data2);&lt;br /&gt;
    } else {&lt;br /&gt;
	register WORD reg = regbase+adlib_op[channel];&lt;br /&gt;
	FMwriteReg(reg, data1);&lt;br /&gt;
	FMwriteReg(reg+3, data2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Write to channel a single value. To be used for register bases of&lt;br /&gt;
 * 0xA0, 0xB0 and 0xC0.&lt;br /&gt;
 */&lt;br /&gt;
void FMwriteValue(BYTE regbase, BYTE channel, BYTE value)&lt;br /&gt;
{&lt;br /&gt;
    static WORD ch[] = {0x000,0x001,0x002,0x003,0x004,0x005,0x006,0x007,0x008,&lt;br /&gt;
			0x100,0x101,0x102,0x103,0x104,0x105,0x106,0x107,0x108};&lt;br /&gt;
    register WORD chan;&lt;br /&gt;
&lt;br /&gt;
    if (OPL3)&lt;br /&gt;
	chan = ch[channel];&lt;br /&gt;
    else&lt;br /&gt;
	chan = channel;&lt;br /&gt;
    FMwriteReg(regbase + chan, value);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Detection Methods ==&lt;br /&gt;
&lt;br /&gt;
An official method of Adlib (OPL2) detection is:&lt;br /&gt;
&lt;br /&gt;
# Reset Timer 1 and Timer 2: write 60h to register 4.&lt;br /&gt;
# Reset the IRQ: write 80h to register 4.&lt;br /&gt;
#* NOTE: Steps 1 and 2 can&#039;t be combined together.&lt;br /&gt;
# Read status register: read port base+0 (388h). Save the result.&lt;br /&gt;
# Set Timer 1 to FFh: write FFh to register 2.&lt;br /&gt;
# Unmask and start Timer 1: write 21h to register 4.&lt;br /&gt;
# Wait in a delay loop for at least 80 µsec.&lt;br /&gt;
# Read status register: read port base+0 (388h). Save the result.&lt;br /&gt;
# Reset Timer 1, Timer 2 and IRQ as in steps 1 and 2.&lt;br /&gt;
# Test the results of the two reads: the first should be 0, the second should be C0h. If either is incorrect, then the OPL2 is not present.&lt;br /&gt;
&lt;br /&gt;
* NOTE1: You should AND the result bytes with E0h because the unused bits are undefined.&lt;br /&gt;
* NOTE2: This testing method doesn&#039;t work in some SoundBlaster compatible cards.&lt;br /&gt;
&lt;br /&gt;
=== OPL3 Detection ===&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
The datasheet for the YMF289B (OPL3-L) describes the following method:&lt;br /&gt;
&lt;br /&gt;
# Detect OPL2. All OPL3 devices should succeed OPL2 checks.&lt;br /&gt;
# Read status register: read port base+0.&lt;br /&gt;
# AND the result with 06h.&lt;br /&gt;
# If the result is zero, you have OPL3, otherwise OPL2.&lt;br /&gt;
&lt;br /&gt;
The OPL3-L can further be discerned from OPL3 by attempting to read registers on the OPL3-L. This is not possible on the OPL3.&lt;br /&gt;
&lt;br /&gt;
Another possible detection method for distinguishing between SB Pro I and SB Pro II would be to try to detect OPL2 at I/O port base+0 and then at port base+2. The first test should succeed and the second should fail if OPL3 is present. (Remember: SB Pro I contains twin OPL2 chips at addresses base+0 and base+2, while SB Pro II contains one OPL3 chip at I/O address base+0 thru base+3).&lt;br /&gt;
&lt;br /&gt;
== BLASTER Environment Variable ==&lt;br /&gt;
&lt;br /&gt;
Perhaps the most recommended &amp;quot;detection&amp;quot; method. Reading this variable avoids blindfold I/O port scanning and possible device conflicts. The user is responsible for its proper setting.&lt;br /&gt;
&lt;br /&gt;
The variable has this format:&lt;br /&gt;
&lt;br /&gt;
 BLASTER=Aaddr Iirq Ddma Ttype&lt;br /&gt;
&lt;br /&gt;
* A: Base I/O address given in hex. For most Sound Blasters the default is 220.&lt;br /&gt;
* I: IRQ Number (decimal). Default 7.&lt;br /&gt;
* D: DMA Number (decimal). Default 1.&lt;br /&gt;
* T: Card Type (decimal):&lt;br /&gt;
** 1 - Sound Blaster 1.5&lt;br /&gt;
** 2 - Sound Blaster Pro I&lt;br /&gt;
** 3 - Sound Blaster 2.0&lt;br /&gt;
** 4 - Sound Blaster Pro II&lt;br /&gt;
** 6 - Sound Blaster 16, AWE32/64&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 BLASTER=A220 I7 D1 T4&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The PC Games Programmers Encyclopedia&#039;&#039;, Mark Feldman and many others on Usenet and Internet, http://bespin.org/~qz/pc-gpe/&lt;br /&gt;
: ... you can find (almost) everything you need there&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sound Blaster - The Official Book&#039;&#039;, Richard Heimlich, David M. Golden, Ivan Luk, Peter M. Ridge, Osborne/McGraw Hill, ISBN 0-07-881907-5&lt;br /&gt;
: ... this is a number-one in my book-wishlist. If anyone wanted to get rid of the book, I wouldn&#039;t scorn it ... :-)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The SoundBlaster Developer Kit&#039;&#039;, Creative Labs Inc, Creative Technology PTE LTD&lt;br /&gt;
: ... I wonder if you can find something comprehensible in that.&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=OPL_chip&amp;diff=12057</id>
		<title>OPL chip</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=OPL_chip&amp;diff=12057"/>
		<updated>2024-11-18T20:42:17Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* OPL3 Detection */ The detection method is indeed &amp;quot;official&amp;quot; but only printed in another product datasheet (OPL3-L)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Programmer&#039;s Guide to Yamaha YMF 262/OPL3 FM Music Synthesizer =&lt;br /&gt;
Version 1.00  Nov-24-1994&lt;br /&gt;
&lt;br /&gt;
Written by Vladimir Arnost, QA-Software&lt;br /&gt;
Internet:  xarnos00@dcse.fee.vutbr.cz&lt;br /&gt;
&lt;br /&gt;
This manual can be distributed freely if not modified.&lt;br /&gt;
&lt;br /&gt;
=== Disclaimer ===&lt;br /&gt;
&lt;br /&gt;
I assume no responsibility for any damages arising out of use or inability to use this text. No warranty is provided about correctness of any information in this file. You are on your own.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The chip I am going to describe is getting more and more common, but programming information is still scarce, so I have decided to fill in this gap. All information contained in this file is a result of my experience in Adlib programming, research (read: reverse engineering) and finally of my effort to write down everything necessary to understand and use this piece of hardware. No official sources (i.e. development kits, books about this topic, etc.) were available to me except:&lt;br /&gt;
&lt;br /&gt;
: Adlib Programming Guide - by Tero Töttö, and&lt;br /&gt;
: The PC Games Programmers Encyclopedia V1.0&lt;br /&gt;
&lt;br /&gt;
The information below is a combination of known features of Adlib (alias Yamaha YM 3812/OPL2) and my own uncountable experiments and failures, which brought out a lot of important details you have to know about the chip.&lt;br /&gt;
&lt;br /&gt;
As far as I know, there are four major sound cards based on OPL3 chip:&lt;br /&gt;
&lt;br /&gt;
* Sound Blaster Pro II (not Sound Blaster Pro I)&lt;br /&gt;
* Sound Blaster 16&lt;br /&gt;
* Adlib Gold&lt;br /&gt;
* Pro Audio Spectrum Plus/16&lt;br /&gt;
&lt;br /&gt;
I currently have a Sound Blaster Pro II-compatible card only, so all the programming info I provide will be based on this card. (The other cards are quite similar, however. They are just wired at different I/O-port addresses.)&lt;br /&gt;
&lt;br /&gt;
Note: I assume some knowledge of FM music programming (mainly Adlib FM synthesizer) in this manual. If you are new to this topic I recommend you try Adlib first before going higher. Anyway, OPL3 is a direct descendant of OPL2 (what a surprise), so most features of OPL2 are also present on OPL3.&lt;br /&gt;
&lt;br /&gt;
== Description of the Synthesizer ==&lt;br /&gt;
&lt;br /&gt;
My card&#039;s user manual says: &amp;quot;[this card contains] ... a stereo music FM synthesizer with 20 channels consisting of four (4) operators each ... &amp;quot; I thought: &amp;quot;Wow -- that&#039;s together eighty operators. This must be a GOOD sound-card.&amp;quot; I was wrong. Just another advertising lie.&lt;br /&gt;
&lt;br /&gt;
So let&#039;s clear some facts. First, OPL3 has only thirty-six (36) operators which can be combined in several ways:&lt;br /&gt;
&lt;br /&gt;
* 18 FM channels (36 operators), or&lt;br /&gt;
* 15 FM channels (30 ops) and 5 percussion instruments (6 ops), giving us 20 channels altogether, or&lt;br /&gt;
* up to 6 four-operator FM channels (max 24 ops), the rest again being divided into two-operator FM channels and drums.&lt;br /&gt;
&lt;br /&gt;
From the table above you can see that not all channels can be used in four-operator (4-OP) mode -- only a part of the synthesizer is really capable of making 4-OP sounds -- the rest uses traditional two-operator (2-OP) mode.&lt;br /&gt;
&lt;br /&gt;
Second, the manual states this card is capable of &amp;quot;stereo&amp;quot; music. Yes, the quotes are necessary, because the stereo capabilities are very limited. You are given ability to control output going to left or right channel by turning it on and off. That&#039;s all. So the sound can flow from very left side, center and very right side. No sound panning, no special stereo effects. :-(&lt;br /&gt;
&lt;br /&gt;
Well, flaming apart, back to the main topic.&lt;br /&gt;
&lt;br /&gt;
The OPL3 chip is capable of making sounds in several ways:&lt;br /&gt;
&lt;br /&gt;
=== Two-operator Additive Synthesis ===&lt;br /&gt;
&lt;br /&gt;
Output of both operators is simply added. It is the simplest way to make any sound, and it works on both OPL2 and OPL3. The diagram should make it clear.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	┌────────────┐&lt;br /&gt;
	│            │&lt;br /&gt;
	│ Operator 1 ├────────┐&lt;br /&gt;
	│            │        │&lt;br /&gt;
	└────────────┘        │&lt;br /&gt;
			      ├────────&amp;gt; Output&lt;br /&gt;
	┌────────────┐        │&lt;br /&gt;
	│            │        │&lt;br /&gt;
	│ Operator 2 ├────────┘&lt;br /&gt;
	│            │&lt;br /&gt;
	└────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Two-operator Frequency Modulation (FM) Synthesis ===&lt;br /&gt;
&lt;br /&gt;
Output from the first operator (Modulator) is sent to the input of the second one (Carrier) and is used to modulate (alter) frequency of the second operator. Only the second operator produces sound. Most of interesting sounds are made this way. This also works on OPL2. Hope the picture helps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	┌────────────┐         ┌────────────┐&lt;br /&gt;
	│            │         │            │&lt;br /&gt;
	│ Operator 1 ├────────&amp;gt;│ Operator 2 ├────────&amp;gt; Output&lt;br /&gt;
	│(Modulator) │         │ (Carrier)  │&lt;br /&gt;
	└────────────┘         └────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Four-operator &amp;quot;Mess&amp;quot; Modulation Synthesis ===&lt;br /&gt;
&lt;br /&gt;
All of OPL3&#039;s 4-OP configurations are combinations of the above two modes of synthesis. OPL3 combines these two modes in four ways. I have no words to describe these four ways. Only the pictures can show their principle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   a) FM-FM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐      ┌───────┐      ┌───────┐      ┌───────┐&lt;br /&gt;
	│       │      │       │      │       │      │       │&lt;br /&gt;
	│ Op. 1 ├─────&amp;gt;│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │      │       │      │       │&lt;br /&gt;
	└───────┘      └───────┘      └───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   b) AM-FM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐&lt;br /&gt;
	│       │&lt;br /&gt;
	│ Op. 1 ├───────────────────────────────────┐&lt;br /&gt;
	│       │                                   │&lt;br /&gt;
	└───────┘                                   │&lt;br /&gt;
						    │&lt;br /&gt;
	┌───────┐      ┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │      │       │     │&lt;br /&gt;
	│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────┴─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │      │       │&lt;br /&gt;
	└───────┘      └───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   c) FM-AM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐      ┌───────┐&lt;br /&gt;
	│       │      │       │&lt;br /&gt;
	│ Op. 1 ├─────&amp;gt;│ Op. 2 ├─────┐&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	└───────┘      └───────┘     │&lt;br /&gt;
				     ├─────&amp;gt; Output&lt;br /&gt;
	┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	│ Op. 3 ├─────&amp;gt;│ Op. 4 ├─────┘&lt;br /&gt;
	│       │      │       │&lt;br /&gt;
	└───────┘      └───────┘&lt;br /&gt;
&lt;br /&gt;
   d) AM-AM Mode&lt;br /&gt;
&lt;br /&gt;
	┌───────┐&lt;br /&gt;
	│       │&lt;br /&gt;
	│ Op. 1 ├────────────────────┐&lt;br /&gt;
	│       │                    │&lt;br /&gt;
	└───────┘                    │&lt;br /&gt;
				     │&lt;br /&gt;
	┌───────┐      ┌───────┐     │&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	│ Op. 2 ├─────&amp;gt;│ Op. 3 ├─────┼─────&amp;gt; Output&lt;br /&gt;
	│       │      │       │     │&lt;br /&gt;
	└───────┘      └───────┘     │&lt;br /&gt;
				     │&lt;br /&gt;
	┌───────┐                    │&lt;br /&gt;
	│       │                    │&lt;br /&gt;
	│ Op. 4 ├────────────────────┘&lt;br /&gt;
	│       │&lt;br /&gt;
	└───────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nice, aren&#039;t they?&lt;br /&gt;
&lt;br /&gt;
The only way I think this can be written is a math formula. Symbol + (plus) means additive synthesis, and * (asterisk) means frequency modulation (Op1 * Op2 means operator 1 modulates operator 2, not vice versa). Here they are:&lt;br /&gt;
&lt;br /&gt;
# FM-FM Mode:	 (Op1 * Op2 * Op3 * Op4) ────&amp;gt; Output&lt;br /&gt;
# AM-FM Mode:	  Op1 + (Op2 * Op3 * Op4) ───&amp;gt; Output&lt;br /&gt;
# FM-AM Mode:	 (Op1 * Op2) + (Op3 * Op4) ──&amp;gt; Output&lt;br /&gt;
# AM-AM Mode:	  Op1 + (Op2 * Op3) + Op4 ───&amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
=== Percussion Mode ===&lt;br /&gt;
&lt;br /&gt;
In this mode 6 operators are used to produce five different percussion instruments:&lt;br /&gt;
&lt;br /&gt;
* Bass Drum (2 operators)&lt;br /&gt;
* Snare Drum (1 operator)&lt;br /&gt;
* Tom-Tom (1 operator)&lt;br /&gt;
* Cymbal (1 operator)&lt;br /&gt;
* Hi-Hat (1 operator)&lt;br /&gt;
&lt;br /&gt;
Based on notes from MAME&#039;s OPL emulator, the following points hold true:&lt;br /&gt;
&lt;br /&gt;
* Setting the block/fnum on each percussive channel may affect multiple instruments.&lt;br /&gt;
** The pitch on channel 6 affects just the bass drum&lt;br /&gt;
** The pitch on channel 7 affects the hihat, cymbal and snare&lt;br /&gt;
** The pitch on channel 8 affects the hihat, cymbal and tomtom&lt;br /&gt;
* The modulator/carrier output level is used to set the volume of each instrument.&lt;br /&gt;
** channel 6 carrier controls the volume of the bass drum&lt;br /&gt;
** channel 7 modulator controls the volume of the hi-hat&lt;br /&gt;
** channel 7 carrier controls the volume of the snare&lt;br /&gt;
** channel 8 modulator controls the volume of the tomtom&lt;br /&gt;
** channel 8 carrier controls the volume of the cymbal&lt;br /&gt;
* Panning L/R bits set via register 0xC0 affect instruments as follows:&lt;br /&gt;
** channel 6 affects the bass drum&lt;br /&gt;
** channel 7 affects hi-hat and snare&lt;br /&gt;
** channel 8 affects cymbal and tomtom&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;AdLib Programmer&#039;s Manual&#039;&#039; contains playback code that uses the Tom-Tom frequency for all percussion instruments.  It is possible this is the source of the confusion.  Here, when a note is played on the Tom-Tom channel, that note will of course cause the Top Cymbal to change as well because of the shared channel.  But the code increases this pitch by seven semitones and sets that frequency for channel 7 at the same time, ensuring the Hi-Hat and Snare Drum are always set to seven semitones above the last Tom-Tom note.  (See [[AdLib MIDI Format]] for details.)&lt;br /&gt;
&lt;br /&gt;
This mode is identical with that of OPL2. For more details see ADLIB.DOC.&lt;br /&gt;
&lt;br /&gt;
== Programming the Synthesizer ==&lt;br /&gt;
&lt;br /&gt;
OPL3 may be found at the following addresses:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Sound Blaster Pro II || 220h or 240h (selectable), also 388h&lt;br /&gt;
|-&lt;br /&gt;
| Adlib Gold || 388h&lt;br /&gt;
|-&lt;br /&gt;
| Pro Audio Spectrum Plus/16 || ? (if you have a PAS you should know it)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The base address of the synthesizer will be called &amp;quot;base&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The chip occupies four I/O addresses:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| base+0 || Primary index register (write), Status register (read)&lt;br /&gt;
|-&lt;br /&gt;
| base+1 || Primary data register (write-only)&lt;br /&gt;
|-&lt;br /&gt;
| base+2 || Secondary index register (write)&lt;br /&gt;
|-&lt;br /&gt;
| base+3 || Secondary data register (write-only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The index registers are used to select internal registers and data registers are used to write to them. Status register returns the state of two timers built in the chip.&lt;br /&gt;
&lt;br /&gt;
OPL3 contains two sets of registers. The Primary set maps to channels 0-8 (operators 0-17) and the secondary maps to channels 9-17 (operators 18-35). The reason for this is simple: all these registers wouldn&#039;t fit into single register set.&lt;br /&gt;
&lt;br /&gt;
Unlike Adlib (OPL2), OPL3 doesn&#039;t need delay between register writes. With OPL2 you had to wait 3.3 µs after index register write and another 23 µs after data register write. On the contrary OPL3 doesn&#039;t need (almost) any delay after index register write and only 0.28 µs after data register write. This means you can neglect the delays and slightly speed up your music driver. But using reasonable delays will certainly do no harm.&lt;br /&gt;
&lt;br /&gt;
The data registers can&#039;t be read (they are write-only) on both OPL2 and OPL3.&lt;br /&gt;
&lt;br /&gt;
== Register Map ==&lt;br /&gt;
&lt;br /&gt;
The registers are grouped in the same manner as in the OPL2 chip. Programs using both OPL2 and OPL3 chips may use the same code provided that their direct I/O interface is well written. The only thing you have to change is operator-to-register mapping, which must accomodate the fact that registers are spread between two register sets.&lt;br /&gt;
&lt;br /&gt;
(The register map is nearly the same so I dared to copy it from ADLIB.DOC.)&lt;br /&gt;
&lt;br /&gt;
=== Status Register (base+0) ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
!    D7   !!   D6   !!   D5   !!   D4   !!   D3   !!   D2   !!   D1   !!   D0&lt;br /&gt;
|-&lt;br /&gt;
| IRQFlag || T1Flag || T2Flag ||        ||        ||        ||        ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Data Registers (base+1, base+3) ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! REG   !!   D7   !!   D6   !!   D5   !!   D4   !!   D3   !!   D2   !!   D1   !!   D0&lt;br /&gt;
|-&lt;br /&gt;
| 01    ||colspan=2| Test Register ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|(WSEnable)||colspan=5| Test Register&lt;br /&gt;
|-&lt;br /&gt;
| 02    ||colspan=8| Timer 1 Count (80 µsec resolution)&lt;br /&gt;
|-&lt;br /&gt;
| 03    ||colspan=8| Timer 2 Count (320 µsec resolution)&lt;br /&gt;
|-&lt;br /&gt;
| 04*   ||IRQReset|| T1Mask || T2Mask ||colspan=3|                  ||T2 Start||T1 Start&lt;br /&gt;
|-&lt;br /&gt;
| 04**  ||colspan=2|        ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP B-E||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP A-D||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 9-C||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 2-5||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 1-4||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|4-OP 0-3&lt;br /&gt;
|-&lt;br /&gt;
| 05**  ||colspan=7|                                                           ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;| OPL3&lt;br /&gt;
|-&lt;br /&gt;
| 08    ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;| (CSW)  ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|NOTE-SEL||colspan=6|&lt;br /&gt;
|-&lt;br /&gt;
| 20-35 ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Tremolo ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Vibrato ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|Sustain ||style=&amp;quot;background-color: #CCCCFF;&amp;quot;|  KSR   ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Frequency Multiplication Factor&lt;br /&gt;
|-&lt;br /&gt;
| 40-55 ||colspan=2 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Key Scale Level ||colspan=6 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 60-75 ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Attack Rate ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 80-95 ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Sustain Level ||colspan=4 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| A0-A8 ||colspan=8 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Frequency Number  (Lower 8 bits)&lt;br /&gt;
|-&lt;br /&gt;
| B0-B8 ||colspan=2|        ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| KEY-ON ||colspan=3 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Block Number ||colspan=2 style=&amp;quot;background-color: #FFE0CC;&amp;quot;| F-Num (hi bits)&lt;br /&gt;
|-&lt;br /&gt;
| BD*   ||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|Trem Dep||style=&amp;quot;background-color: #CCFFCC;&amp;quot;|Vibr Dep||style=&amp;quot;background-color: #FFCCDD;&amp;quot;|PercMode||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| BD On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| SD On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| TT On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| CY On  ||style=&amp;quot;background-color: #FFCCDD;&amp;quot;| HH On&lt;br /&gt;
|-&lt;br /&gt;
| C0-C8 ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| OutCh_D ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| OutCh_C ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Right  ||style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Left   ||colspan=3 style=&amp;quot;background-color: #FFE0CC;&amp;quot;|FeedBack Modulation Factor||style=&amp;quot;background-color: #FFE0CC;&amp;quot;|SynthTyp&lt;br /&gt;
|-&lt;br /&gt;
| E0-F5 ||colspan=5|                                      ||colspan=3 style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;background-color: #CCFFCC;&amp;quot;| Chip-wide setting&lt;br /&gt;
|style=&amp;quot;background-color: #CCCCFF;&amp;quot;| Per operator&lt;br /&gt;
|style=&amp;quot;background-color: #FFE0CC;&amp;quot;| Per channel&lt;br /&gt;
|style=&amp;quot;background-color: #FFCCDD;&amp;quot;| Rhythm-mode only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; This applies only to port base+1 (OPL2)&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; This applies only to port base+3 (OPL3, second register set)&lt;br /&gt;
&lt;br /&gt;
For register bases A0, B0 and C0 there is one register per output channel. The primary register set holds the first nine channels (0-8) and the secondary holds last nine channels (9-17). For bases 20, 40, 60, 80 and E0 there are two registers per channel. Each register maps to one operator. Unfortunately the operator&#039;s register numbers are not continuous. The following table shows which operator maps to which register set and offset (in hex).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Op. !! Set/Offset !! Op. !! Set/Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0  || 0/00 || 18 || 1/00&lt;br /&gt;
|-&lt;br /&gt;
| 1  || 0/01 || 19 || 1/01&lt;br /&gt;
|-&lt;br /&gt;
| 2  || 0/02 || 20 || 1/02&lt;br /&gt;
|-&lt;br /&gt;
| 3  || 0/03 || 21 || 1/03&lt;br /&gt;
|-&lt;br /&gt;
| 4  || 0/04 || 22 || 1/04&lt;br /&gt;
|-&lt;br /&gt;
| 5  || 0/05 || 23 || 1/05&lt;br /&gt;
|-&lt;br /&gt;
| 6  || 0/08 || 24 || 1/08&lt;br /&gt;
|-&lt;br /&gt;
| 7  || 0/09 || 25 || 1/09&lt;br /&gt;
|-&lt;br /&gt;
| 8  || 0/0A || 26 || 1/0A&lt;br /&gt;
|-&lt;br /&gt;
| 9  || 0/0B || 27 || 1/0B&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 0/0C || 28 || 1/0C&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 0/0D || 29 || 1/0D&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 0/10 || 30 || 1/10&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 0/11 || 31 || 1/11&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 0/12 || 32 || 1/12&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 0/13 || 33 || 1/13&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 0/14 || 34 || 1/14&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 0/15 || 35 || 1/15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following tables summarize which operators form a channel in various modes:&lt;br /&gt;
&lt;br /&gt;
1. Two-operator Melodic Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel    !! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 6 || 7  || 8  || 12 || 13 || 14 || 18 || 19 || 20 || 24 || 25 || 26 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 9 || 10 || 11 || 15 || 16 || 17 || 21 || 22 || 23 || 27 || 28 || 29 || 33 || 34 || 35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
2. Two-operator Melodic and Percussion Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! BD !! SD !! TT !! CY !! HH !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 6 || 7  || 8  || 12 || 16 || 14 || 17 || 13 || 18 || 19 || 20 || 24 || 25 || 26 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 9 || 10 || 11 || 15 ||colspan=4| - || 21 || 22 || 23 || 27 || 28 || 29 || 33 || 34 || 35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
3. Four-operator Melodic Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 12 || 13 || 14 || 18 || 19 || 20 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 15 || 16 || 17 || 21 || 22 || 23 || 33 || 34 || 35&lt;br /&gt;
|-&lt;br /&gt;
| Operator 3 || 6 || 7 || 8 ||colspan=3| - || 24 || 25 || 26 ||colspan=3| -&lt;br /&gt;
|-&lt;br /&gt;
| Operator 4 || 9 || 10 || 11 ||colspan=3| - || 27 || 28 || 29 ||colspan=3| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channels 3, 4, 5 and 12, 13, 14 can&#039;t be used separately because their operators became part of channels 0, 1, 2 and 9, 10, 11 respectively. For instance a four-operator channel 1 consists of two two-operator channels number 1 and 4. (The second 2-OP channel number is always the first 2-OP channel number plus three.)&lt;br /&gt;
&lt;br /&gt;
OPL3 allows you to enable/disable 4-OP mode separately for any of channels 0, 1, 2, 9, 10 and 11 (see register 104h in the reference below). This means for instance when you switch only channel 2 into 4-OP mode, channels number 0, 1, 3, 4, 6, 7, 8, 9, etc. will be still independent 2-OP channels.&lt;br /&gt;
&lt;br /&gt;
Channels 6, 7, 8 and 15, 16, 17 are always two-operator ones. They can&#039;t be grouped to form four-operator channels.&lt;br /&gt;
&lt;br /&gt;
4. Four-operator Melodic and Percussion Mode&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred&amp;quot;&lt;br /&gt;
! Channel !! 0 !! 1 !! 2 !! BD !! SD !! TT !! CY !! HH !! 9 !! 10 !! 11 !! 15 !! 16 !! 17&lt;br /&gt;
|-&lt;br /&gt;
| Operator 1 || 0 || 1 || 2 || 12 || 16 || 14 || 17 || 13 || 18 || 19 || 20 || 30 || 31 || 32&lt;br /&gt;
|-&lt;br /&gt;
| Operator 2 || 3 || 4 || 5 || 15 ||colspan=4| - || 21 || 22 || 23 || 33 || 34 || 35&lt;br /&gt;
|-&lt;br /&gt;
| Operator 3 || 6 || 7 || 8 ||colspan=5| - || 24 || 25 || 26 ||colspan=3| -&lt;br /&gt;
|-&lt;br /&gt;
| Operator 4 || 9 || 10 || 11 ||colspan=5| - || 27 || 28 || 29 ||colspan=3| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
Two-operator channel #14 consists of operators 26 and 29 which occupy these registers (all are in the secondary register set):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 12A || Operator 1 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 12D || Operator 2 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 14A || Operator 1 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 14D || Operator 2 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 16A || Operator 1 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 16D || Operator 2 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 18A || Operator 1 ||Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 18D || Operator 2 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 1A5 ||            || Frequency Number (low)&lt;br /&gt;
|-&lt;br /&gt;
| 1B5 ||            || Key On/Block Number/Frequency Number (high)&lt;br /&gt;
|-&lt;br /&gt;
| 1C5 ||            || FeedBack/Synthesis Type&lt;br /&gt;
|-&lt;br /&gt;
| 1EA || Operator 1 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| 1ED || Operator 2 || Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Four-operator channel #1 consists of operators 1, 4, 7 and 10. All registers except register 104h are in the primary set:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 104 || bit 1 = 1  || Enable Four-Operator Synthesis in channel #1&lt;br /&gt;
|-&lt;br /&gt;
| 21 || Operator 1 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 24 || Operator 2 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 29 || Operator 3 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 2C || Operator 4 || Tremolo/Vibrato/Sustain/KSR/Multiplication&lt;br /&gt;
|-&lt;br /&gt;
| 41 || Operator 1 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 44 || Operator 2 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 49 || Operator 3 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 4C || Operator 4 || Key Scale Level/Output Level&lt;br /&gt;
|-&lt;br /&gt;
| 61 || Operator 1 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 64 || Operator 2 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 69 || Operator 3 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 6C || Operator 4 || Attack Rate/Decay Rate&lt;br /&gt;
|-&lt;br /&gt;
| 81 || Operator 1 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 84 || Operator 2 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 89 || Operator 3 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| 8C || Operator 4 || Sustain Level/Release Rate&lt;br /&gt;
|-&lt;br /&gt;
| A1 ||            || Frequency Number (low)&lt;br /&gt;
|-&lt;br /&gt;
| A4 ||            || Unused&lt;br /&gt;
|-&lt;br /&gt;
| B1 ||            || Key On/Block Number/Frequency Number (high)&lt;br /&gt;
|-&lt;br /&gt;
| B4 ||            || Unused&lt;br /&gt;
|-&lt;br /&gt;
| C1 ||            || FeedBack/Synthesis Type (part 1)&lt;br /&gt;
|-&lt;br /&gt;
| C4 ||            || Synthesis Type (part 2)&lt;br /&gt;
|-&lt;br /&gt;
| E1 || Operator 1 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| E4 || Operator 2 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| E9 || Operator 3 || Waveform Select&lt;br /&gt;
|-&lt;br /&gt;
| EC || Operator 4 || Waveform Select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
NOTE: If a register number is greater than 100h, then it belongs into the secondary register set. (I use this numbering to emphasize the fact that the particular register MUST be written to the secondary set.) See the example code below for details.&lt;br /&gt;
&lt;br /&gt;
== OPL3 Register Reference ==&lt;br /&gt;
&lt;br /&gt;
Because the registers of OPL3 are almost the same as of OPL2, I have copied their descriptions from file ADLIB.DOC.&lt;br /&gt;
&lt;br /&gt;
=== Status Register ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || T1 || T2 ||colspan=5| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: IRQ Flag. Set whenever any timer has elapsed.&lt;br /&gt;
* bit 6: Timer 1 Flag. Set every time the preset time in Timer 1 has elapsed.&lt;br /&gt;
* bit 5: Timer 2 Flag. Set every time the preset time in Timer 2 has elapsed.&lt;br /&gt;
&lt;br /&gt;
Timer interrupts are not wired to any IRQ (why??). The timers can be used to detect the OPL2/OPL3 chip (see Appendix B).&lt;br /&gt;
&lt;br /&gt;
=== Data Registers ===&lt;br /&gt;
&lt;br /&gt;
==== 01: Test Register / Waveform Select Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| Test Register&lt;br /&gt;
| (WSE)&lt;br /&gt;
|colspan=5| Test Register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 7-6: Test Register. Must be reset to zero before any operation.&lt;br /&gt;
* bit 5: Waveform Select Enable. If clear, all channels will use normal sine wave. If set, register E0-F5 (Waveform Select) contents will be used.&lt;br /&gt;
* bits 0-4: Test Register. Must be reset to zero before any operation.&lt;br /&gt;
&lt;br /&gt;
OPL3 does not implement WSE bit, and it should be left clear. In OPL2 mode all four waveforms are always available, and in OPL3 mode all eight waveforms are always available. For compatibility with OPL2, when a program is finished using an OPL3, the waveform select registers should be set to 0, if the next program assumes that by setting WSE bit to 0 the waveform is always sine like on a real OPL2.&lt;br /&gt;
&lt;br /&gt;
==== 02: Timer 1 Count ====&lt;br /&gt;
&lt;br /&gt;
Upward 8 bit counter with a resolution of 80 µsec. If an overflow occurs, the status register bit is set, and the preset value is loaded into the timer again.&lt;br /&gt;
&lt;br /&gt;
==== 03: Timer 2 Count ====&lt;br /&gt;
&lt;br /&gt;
Same as Timer 1, but with a resolution of 320 µsec.&lt;br /&gt;
&lt;br /&gt;
==== 004 (port: base+1): IRQ-Reset / Mask / Start ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Rst&lt;br /&gt;
| T1M&lt;br /&gt;
| T2M&lt;br /&gt;
|colspan=3| -&lt;br /&gt;
| T2S&lt;br /&gt;
| T1S&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: IRQ-Reset. Resets timer and IRQ flags in status register. All other bits are ignored when this bit is set.&lt;br /&gt;
* bit 6: Timer 1 Mask. If 1, status register is not affected in overflow.&lt;br /&gt;
* bit 5: Timer 2 Mask. Same as above.&lt;br /&gt;
* bit 1: Timer 2 Start. Timer on/off.&lt;br /&gt;
* bit 0: Timer 1 Start. Same as above.&lt;br /&gt;
&lt;br /&gt;
==== 104 (port: base+3): Four-Operator Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| -&lt;br /&gt;
| ChB&lt;br /&gt;
| ChA&lt;br /&gt;
| Ch9&lt;br /&gt;
| Ch2&lt;br /&gt;
| Ch1&lt;br /&gt;
| Ch0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 5: Enable four-operator synthesis for channel pair 11 - 14 (decimal).&lt;br /&gt;
* bit 4: Same as above for channel pair 10 - 13.&lt;br /&gt;
* bit 3: Same as above for channel pair 9 - 12.&lt;br /&gt;
* bit 2: Same as above for channel pair 2 - 5.&lt;br /&gt;
* bit 1: Same as above for channel pair 1 - 4.&lt;br /&gt;
* bit 0: Same as above for channel pair 0 - 3.&lt;br /&gt;
&lt;br /&gt;
If reset to zero, OPL3 can produce 18 two-operator sounds at a time. If nonzero, OPL3 produces four-operator sound in appropriate channel pair.&lt;br /&gt;
&lt;br /&gt;
==== 105 (port: base+3): OPL3 Mode Enable ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=7| -&lt;br /&gt;
| OPL3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 0: OPL3 Mode Enable. When set, OPL3 extensions (36 operators, 4-OP synthesis, 8 waveforms, stereo output) can be used. When reset, the chip behaves as an ordinary OPL2. This bit is zero by default for compatibility with OPL2.&lt;br /&gt;
&lt;br /&gt;
==== 08: CSW / NOTE-SEL ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| (CSW)&lt;br /&gt;
| N-S&lt;br /&gt;
|colspan=6| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: Composite sine wave mode on/off. All KEY-ON bits must be clear in order to use this mode. The card is unable to create any other sound when in CSW mode. (Unfortunately, I have no info how to use this mode :-&amp;lt; ). The CSW mode is not implemented on an OPL3 and this bit is ignored.&lt;br /&gt;
* bit 6: NOTE-SEL. Controls the split point of the keyboard. When 0, the keyboard split is the second bit from the bit 8 of the F-Number. When 1, the MSb of the F-Number is used. (???)&lt;br /&gt;
&lt;br /&gt;
The Note Select bit defines what kind of F-NUM values are used within an octave so the chip knows how to split an octave into two parts. When Note Select bit is 0, F-NUM values used within an octave all have their MSB bit (bit 9) set, ranging from 0x200 to 0x3FF, so the second most significant bit, bit 8 is used to determine if currently playing note belongs to lower (0x200-0x2FF) or upper (0x300-0x3FF) half within an octave. When Note Select bit is 1, the F-NUM value MSB bit, bit 9, is used to determine if the note belongs to lower (0x000-0x1FF) or upper (0x200-0x3FF) half within an octave.&lt;br /&gt;
&lt;br /&gt;
==== 20-35: Tremolo / Vibrato / Sustain / KSR / Frequency Multiplication Factor ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Tre&lt;br /&gt;
| Vib&lt;br /&gt;
| Sus&lt;br /&gt;
| KSR&lt;br /&gt;
|colspan=4| Multiplication&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7:    Tremolo (Amplitude vibrato) on/off.&lt;br /&gt;
* bit 6:    Frequency vibrato on/off.&lt;br /&gt;
* bit 5:    Sound Sustaining. When 1, operator&#039;s output level will be held at its sustain level until a KEY-OFF is done.&lt;br /&gt;
* bit 4:    Envelope scaling (KSR) on/off. When 1, higher notes are shorter than lower notes.&lt;br /&gt;
* bits 0-3: Frequency Multiplication Factor (MULTI). Operator&#039;s frequency is set to (see registers A0, B0) F-Number * Factor.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! MULTI !! Factor&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 5&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 40-55: Key Scale Level / Output Level ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| KSL&lt;br /&gt;
|colspan=6| Output level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 6-7: Key Scale Level. Attenuates output level towards higher pitch:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! KSL !! Attenuation&lt;br /&gt;
|-&lt;br /&gt;
| 0 || -&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3.0 dB/oct&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1.5 dB/oct&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 6.0 dB/oct&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The attenuation level is based on the 3-bit octave (block number) value and top four bits of the FNUM value, so each octave is subdivided into 16 parts.&lt;br /&gt;
&lt;br /&gt;
* bits 0-5: Output Level. Attenuates the operator output level. 0 is the loudest, 3F is the softest. Attenuation range is 48dB with 0.75dB resolution.&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| 24dB || 12dB || 6dB || 3dB || 1.5dB || 0.75dB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In additive synthesis, varying the output level of any operator varies the volume of its corresponding channel. In FM synthesis, varying the output level of the carrier varies the volume of the channel. Varying the output of the modulator will change the frequency spectrum produced by the carrier. The following table summarizes which operators&#039; output levels should be updated when trying to change channel output level.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! Mode !! Op 1 !! Op 2 !! Op 3 !! Op 4&lt;br /&gt;
|-&lt;br /&gt;
| AM    || Y || Y || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| FM    || - || Y || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| FM-FM || - || - || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| AM-FM || Y || - || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| FM-AM || - || Y || -   || Y&lt;br /&gt;
|-&lt;br /&gt;
| AM-AM || Y || - || Y   || Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 60-75: Attack Rate / Decay Rate ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=4| Attack rate&lt;br /&gt;
|colspan=4| Decay rate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 4-7: Attack Rate. Determines the rising time for the sound. The higher the value, the faster the attack. If value is 0, the sound will never attack, and if value is 15, the volume jumps directly from minimum to maximum.&lt;br /&gt;
* bits 0-3: Decay Rate. Determines the diminishing time for the sound. The higher the value, the shorter the decay. If value is 0, the sound does not decay towards sustain level and stays at maximum volume after attack.&lt;br /&gt;
&lt;br /&gt;
==== 80-95: Sustain Level / Release Rate ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=4| Sustain level&lt;br /&gt;
|colspan=4| Release rate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 4-7: Sustain Level. Determines the point at which the sound ceases to decay and chages to a sound having a constant level. The sustain level is expressed as a fraction of the maximum level. 15 is the softest and 0 is the loudest sustain level. Note that the Sustain-bit in the register 20-35 must be set for this to have an effect. Otherwise the sound will continue with release phase after hitting sustain level.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! SL3 !! SL2 !! SL1 !! SL0&lt;br /&gt;
|-&lt;br /&gt;
| -24dB || -12dB || -6dB || -3dB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is an exception when all bits are set (value=15), the actual level is -93dB instead, matching as if the value were 31.&lt;br /&gt;
&lt;br /&gt;
* bits 0-3: Release Rate. Determines the rate at which the sound disappears after KEY-OFF. The higher the value, the shorter the release. Value of 0 causes the sound not to release at all, it will continue to produce sound at level before KEY-OFF.&lt;br /&gt;
&lt;br /&gt;
Some songs (e.g. &amp;lt;tt&amp;gt;LAME intro tune for Xerox of INC.raw&amp;lt;/tt&amp;gt;) set the sustain and release values to the shortest (0xFF) while the note is still playing in order to immediately silence a note that would otherwise linger after keyoff.&lt;br /&gt;
&lt;br /&gt;
==== A0-A8: Frequency Number ====&lt;br /&gt;
&lt;br /&gt;
Determines the pitch of the note. Highest bits of F-Number are stored in the register below.&lt;br /&gt;
&lt;br /&gt;
==== B0-B8: Key On / Block Number / F-Number(hi bits) ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2| -&lt;br /&gt;
| Note on&lt;br /&gt;
|colspan=3| Block number&lt;br /&gt;
|colspan=2| Frequency num.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;note on&#039;&#039;&#039; bit is set to 1 to play a note on the channel, and 0 to silence the note.  Setting this value to 1 when a note is already playing has no effect (it does not retrigger the note.)&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;block number&#039;&#039;&#039; is often referred to as the octave, but this is a misleading description.  The value of the block controls the frequency range spanned by the frequency numbers.  A larger block allows higher frequencies (pitch) to be reached, at the expense of there being a greater difference in pitch of two adjacent frequency numbers.  This works out well, since a low block number allows a very high pitch accuracy for deep notes where it is most noticeable, while high block numbers mean the coarse pitch settings need only be used at high frequencies where the coarseness is unnoticeable.&lt;br /&gt;
&lt;br /&gt;
The following table illustrates the effect of different block numbers.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=2| Block !!colspan=2| Note frequency !!rowspan=2| Difference between&amp;lt;br/&amp;gt;adjacent notes (Hz)&lt;br /&gt;
|-&lt;br /&gt;
! F-num=1 !! F-num=1023&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 0 ||align=right| 0.047 Hz ||align=right| 48.503 Hz ||align=right| 0.048 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 1 ||align=right| 0.094 Hz ||align=right| 97.006 Hz ||align=right| 0.095 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 2 ||align=right| 0.189 Hz ||align=right| 194.013 Hz ||align=right| 0.190 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 3 ||align=right| 0.379 Hz ||align=right| 388.026 Hz ||align=right| 0.379 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 4 ||align=right| 0.758 Hz ||align=right| 776.053 Hz ||align=right| 0.759 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 5 ||align=right| 1.517 Hz ||align=right| 1,552.107 Hz ||align=right| 1.517 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 6 ||align=right| 3.034 Hz ||align=right| 3,104.215 Hz ||align=right| 3.034 Hz&lt;br /&gt;
|-&lt;br /&gt;
|align=center| 7 ||align=right| 6.068 Hz ||align=right| 6,208.431 Hz ||align=right| 6.069 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This shows that block 7 is capable of reaching the highest note (6.2kHz) but since there are 6Hz between notes the accuracy suffers.  Note A-4 is 440Hz but in this block, the two closest frequency numbers are 72 and 73, which create tones at 437Hz and 443Hz respectively, neither of which is particularly accurate.  Blocks 3 and below are unable to reach as high as 440Hz, but block 4 can.  With block 4, frequency numbers 579 and 580 produce 439.4Hz and 440.2Hz, considerably closer to the intended frequency.&lt;br /&gt;
&lt;br /&gt;
In other words, when calculating notes, the best accuracy is achieved by selecting the lowest possible block number that can reach the desired note frequency.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;frequency number&#039;&#039;&#039; is split between registers A0 and B0, with the upper two bits being stored here.  The full frequency number is a value between 0 and 1023 inclusive.  The following formula is used to determine the frequency number for a given note frequency (in Hertz) and block:&lt;br /&gt;
&lt;br /&gt;
: f-num = freq * 2^(20 - block) / 49716&lt;br /&gt;
&lt;br /&gt;
This formula can produce frequency numbers outside of the allowed 0-1023 range if the block number is too low, or the frequency is higher than the hardware can produce.&lt;br /&gt;
&lt;br /&gt;
The sampling frequency of OPL2 and OPL3 chips is approximately 49716 Hz, leading to the constant in the formula.  Occasionally this is rounded to 50000 leading to a small pitch variation if the wrong constant is used to play these songs.  OPL2 cards like Adlib and early Sound Blasters used the 14.31818 MHz oscillator signal from ISA bus slot and divided it by four on card, thus running the OPL2 chip at 3.579545 MHz, which gets divided internally by 72 to get the sampling rate. OPL3 cards had to be compatible, and mostly the sound cards have separate 14.31818 MHz oscillator on board which the OPL3 uses directly, and this gets divided internally by 288 to get the sampling rate.&lt;br /&gt;
&lt;br /&gt;
NOTE: In four-operator mode only the register value of Operators 1 and 2 is used, value of Operators 3 and 4 in this register is ignored. In other words: one channel uses only one frequency, block and KEY-ON value at a time, regardless whether it is a two- or four-operator channel.&lt;br /&gt;
&lt;br /&gt;
Setting the frequency and/or block has an immediate effect, regardless of the state of the &#039;&#039;note on&#039;&#039; bit. By changing the values gradually, pitch bends can be achieved.&lt;br /&gt;
&lt;br /&gt;
{{TODO|Is a delay needed between setting the keyon bit to 0 and then back to 1 to retrigger a note?}}&lt;br /&gt;
&lt;br /&gt;
==== BD: Tremolo Depth / Vibrato Depth / Percussion Mode / BD/SD/TT/CY/HH On ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| Tre&lt;br /&gt;
| Vib&lt;br /&gt;
| Per&lt;br /&gt;
| BD&lt;br /&gt;
| SD&lt;br /&gt;
| TT&lt;br /&gt;
| CY&lt;br /&gt;
| HH&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7:    Tremolo (Amplitude Vibrato) Depth. 0 = 1.0dB, 1 = 4.8dB.&lt;br /&gt;
* bit 6:    Frequency Vibrato Depth. 0 = 7 cents, 1 = 14 cents. A &amp;quot;cent&amp;quot; is 1/100 of a semi-tone.&lt;br /&gt;
* bit 5:    Percussion Mode. 0 = Melodic Mode, 1 = Percussion Mode.&lt;br /&gt;
* bit 4:    BD On. KEY-ON of the Bass Drum channel.&lt;br /&gt;
* bit 3:    SD On. KEY-ON of the Snare Drum channel.&lt;br /&gt;
* bit 2:    TT On. KEY-ON of the Tom-Tom channel.&lt;br /&gt;
* bit 1:    CY On. KEY-ON of the Cymbal channel.&lt;br /&gt;
* bit 0:    HH On. KEY-ON of the Hi-Hat channel.&lt;br /&gt;
&lt;br /&gt;
NOTE: KEY-ON bits of channels 6, 7 and 8 must be clear and their F-Nums, Attack/Decay/Release rates, etc. must be set properly to use percussion mode.&lt;br /&gt;
&lt;br /&gt;
This register only exists in the first register set (OPL2) and does not exist in the second register set (OPL3 upper registers).  Rhythm mode only affects the lower register set, the upper registers are not affected by rhythm mode.&lt;br /&gt;
&lt;br /&gt;
{{TODO|On an OPL3, does the value set here apply to all 18 channels or only the OPL2-compatible first 9 channels?}}&lt;br /&gt;
&lt;br /&gt;
==== C0-C8: FeedBack Modulation Factor / Synthesis Type ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
| OutCh_D&lt;br /&gt;
| OutCh_C&lt;br /&gt;
| R&lt;br /&gt;
| L&lt;br /&gt;
|colspan=3| Feedback&lt;br /&gt;
| Syn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bit 7: CHD, Output Channel D Enable. When set, channel output goes to fourth digital audio output channel.&lt;br /&gt;
* bit 6: CHC, Output Channel C Enable. When set, channel output goes to third digital audio output channel.&lt;br /&gt;
* bit 5:    Right Speaker Enable. When set, channel output goes to second digital audio output channel, connected to right speaker.&lt;br /&gt;
* bit 4:    Left Speaker Enable. When set, channel output goes to first digital audio output channel, connected to left speaker.&lt;br /&gt;
** In OPL3 mode, at least one of the left/right bits must be set to hear the channel.&lt;br /&gt;
** In OPL2 mode, these bits are ignored and audio is sent to all channels for compatibility reasons.&lt;br /&gt;
** Left/Right bits can be used to realize sound &amp;quot;panning&amp;quot;, but this method offers only three pan positions (left/center/right).&lt;br /&gt;
** These bits apply only to operators producing sound (Carriers). Modulators are not affected by their setting.&lt;br /&gt;
** Sound cards use only one stereo DAC, so only two of the four digital output channels are available.&lt;br /&gt;
* bits 1-3: FeedBack Modulation Factor. If 0, no feedback is present. If 1-7, operator 1 will send a portion of its output back into itself.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! FeedBack !! Factor&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;amp;pi;/16&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;amp;pi;/8&lt;br /&gt;
|-&lt;br /&gt;
| 3 || &amp;amp;pi;/4&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;amp;pi;/2&lt;br /&gt;
|-&lt;br /&gt;
| 5 || &amp;amp;pi;&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 2&amp;amp;pi;&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 4&amp;amp;pi;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When in four-operator mode, the FeedBack value is used only by Operator 1, value of Operators 2, 3 and 4 is ignored.&lt;br /&gt;
&lt;br /&gt;
* bit 0: Synthesis Type. 1 = Additive synthesis, 0 = Frequency Modulation.  In four-operator mode, there are two bits controlling the synthesis type. Both are the bit 0 of register C0, one of Operators 1 and 2 and the second of Operators 3 and 4.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! Op 1&amp;amp;2 !! Op 3&amp;amp;4 !! Type&lt;br /&gt;
|-&lt;br /&gt;
| 0 || NONE || FM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || NONE || AM&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || FM-FM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || AM-FM&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || FM-AM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || AM-AM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== E0-F5: Waveform Select ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable centred fixed-width&amp;quot;&lt;br /&gt;
! D7 !! D6 !! D5 !! D4 !! D3 !! D2 !! D1 !! D0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5| -&lt;br /&gt;
|colspan=3| Waveform&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* bits 0-2: WaveForm Select (WS): &amp;lt;gallery widths=300px heights=150px perrow=4&amp;gt;&lt;br /&gt;
Image:OPL_Wave0_Digital.svg|Waveform 0: Sine&lt;br /&gt;
Image:OPL_Wave1_Digital.svg|Waveform 1: Half-sine&lt;br /&gt;
Image:OPL_Wave2_Digital.svg|Waveform 2: Abs-sine&lt;br /&gt;
Image:OPL_Wave3_Digital.svg|Waveform 3: Pulse-sine&lt;br /&gt;
Image:OPL_Wave4_Digital.svg|Waveform 4: Sine - even periods only&lt;br /&gt;
Image:OPL_Wave5_Digital.svg|Waveform 5: Abs-sine - even periods only&lt;br /&gt;
Image:OPL_Wave6_Digital.svg|Waveform 6: Square&lt;br /&gt;
Image:OPL_Wave7_Digital.svg|Waveform 7: Derived square&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* NOTE: Bit 5 of register 01 must be set to use waveforms other than sine. Waveforms 4-7 are available only on OPL3.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
These examples show a few working routines used in my MUS Player. They are written in Borland C++ 3.1 but should be easy to translate to any other language.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
// I prefer using these Assembler-like types&lt;br /&gt;
typedef unsigned int  WORD;&lt;br /&gt;
typedef unsigned char BYTE;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * FM Synthesizer base port. SB Pro II - 0x220, Adlib 0x388&lt;br /&gt;
 */&lt;br /&gt;
WORD FMport = 0x220;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Enables OPL3 extensions.&lt;br /&gt;
 */&lt;br /&gt;
WORD OPL3 = 1;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Direct write to any Adlib/SB Pro II FM synthetiser register.&lt;br /&gt;
 *   reg - register number (range 0x001-0x0F5 and 0x101-0x1F5). When high byte&lt;br /&gt;
 *         of reg is zero, data go to port FMport, otherwise to FMport+2&lt;br /&gt;
 *   data - register value to be written&lt;br /&gt;
 */&lt;br /&gt;
BYTE FMwriteReg(WORD reg, BYTE data)&lt;br /&gt;
{&lt;br /&gt;
    asm {&lt;br /&gt;
	mov	dx,FMport&lt;br /&gt;
	mov	ax,reg&lt;br /&gt;
	or	ah,ah		// high byte is nonzero -- write to port base+2&lt;br /&gt;
	jz	out1&lt;br /&gt;
	inc	dx&lt;br /&gt;
	inc	dx&lt;br /&gt;
    }&lt;br /&gt;
out1: asm {&lt;br /&gt;
	out	dx,al&lt;br /&gt;
	mov	cx,6&lt;br /&gt;
    }&lt;br /&gt;
loop1:asm {			// delay between writes&lt;br /&gt;
	in	al,dx&lt;br /&gt;
	loop	loop1&lt;br /&gt;
&lt;br /&gt;
	inc	dx&lt;br /&gt;
	mov	al,data&lt;br /&gt;
	out	dx,al&lt;br /&gt;
	dec	dx&lt;br /&gt;
	mov	cx,36&lt;br /&gt;
    }&lt;br /&gt;
loop2:asm {			// delay after data write&lt;br /&gt;
	in	al,dx&lt;br /&gt;
	loop	loop2&lt;br /&gt;
    }&lt;br /&gt;
    return _AL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Write to an operator pair. To be used for register bases of 0x20, 0x40,&lt;br /&gt;
 * 0x60, 0x80 and 0xE0.&lt;br /&gt;
 */&lt;br /&gt;
void FMwriteChannel(BYTE regbase, BYTE channel, BYTE data1, BYTE data2)&lt;br /&gt;
{&lt;br /&gt;
    static BYTE adlib_op[] = {0, 1, 2, 8, 9, 10, 16, 17, 18};&lt;br /&gt;
    static BYTE sbpro_op[] = { 0,  1,  2,   6,  7,  8,  12, 13, 14,&lt;br /&gt;
			      18, 19, 20,  24, 25, 26,  30, 31, 32};&lt;br /&gt;
    static WORD rg[] = {0x000,0x001,0x002,0x003,0x004,0x005,&lt;br /&gt;
			0x008,0x009,0x00A,0x00B,0x00C,0x00D,&lt;br /&gt;
			0x010,0x011,0x012,0x013,0x014,0x015,&lt;br /&gt;
			0x100,0x101,0x102,0x103,0x104,0x105,&lt;br /&gt;
			0x108,0x109,0x10A,0x10B,0x10C,0x10D,&lt;br /&gt;
			0x110,0x111,0x112,0x113,0x114,0x115};&lt;br /&gt;
&lt;br /&gt;
    if (OPL3)&lt;br /&gt;
    {&lt;br /&gt;
	register WORD reg = sbpro_op[channel];&lt;br /&gt;
	FMwriteReg(rg[reg]+regbase, data1);&lt;br /&gt;
	FMwriteReg(rg[reg+3]+regbase, data2);&lt;br /&gt;
    } else {&lt;br /&gt;
	register WORD reg = regbase+adlib_op[channel];&lt;br /&gt;
	FMwriteReg(reg, data1);&lt;br /&gt;
	FMwriteReg(reg+3, data2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Write to channel a single value. To be used for register bases of&lt;br /&gt;
 * 0xA0, 0xB0 and 0xC0.&lt;br /&gt;
 */&lt;br /&gt;
void FMwriteValue(BYTE regbase, BYTE channel, BYTE value)&lt;br /&gt;
{&lt;br /&gt;
    static WORD ch[] = {0x000,0x001,0x002,0x003,0x004,0x005,0x006,0x007,0x008,&lt;br /&gt;
			0x100,0x101,0x102,0x103,0x104,0x105,0x106,0x107,0x108};&lt;br /&gt;
    register WORD chan;&lt;br /&gt;
&lt;br /&gt;
    if (OPL3)&lt;br /&gt;
	chan = ch[channel];&lt;br /&gt;
    else&lt;br /&gt;
	chan = channel;&lt;br /&gt;
    FMwriteReg(regbase + chan, value);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Detection Methods ==&lt;br /&gt;
&lt;br /&gt;
An official method of Adlib (OPL2) detection is:&lt;br /&gt;
&lt;br /&gt;
# Reset Timer 1 and Timer 2: write 60h to register 4.&lt;br /&gt;
# Reset the IRQ: write 80h to register 4.&lt;br /&gt;
#* NOTE: Steps 1 and 2 can&#039;t be combined together.&lt;br /&gt;
# Read status register: read port base+0 (388h). Save the result.&lt;br /&gt;
# Set Timer 1 to FFh: write FFh to register 2.&lt;br /&gt;
# Unmask and start Timer 1: write 21h to register 4.&lt;br /&gt;
# Wait in a delay loop for at least 80 µsec.&lt;br /&gt;
# Read status register: read port base+0 (388h). Save the result.&lt;br /&gt;
# Reset Timer 1, Timer 2 and IRQ as in steps 1 and 2.&lt;br /&gt;
# Test the results of the two reads: the first should be 0, the second should be C0h. If either is incorrect, then the OPL2 is not present.&lt;br /&gt;
&lt;br /&gt;
* NOTE1: You should AND the result bytes with E0h because the unused bits are undefined.&lt;br /&gt;
* NOTE2: This testing method doesn&#039;t work in some SoundBlaster compatible cards.&lt;br /&gt;
&lt;br /&gt;
=== OPL3 Detection ===&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
The datasheet for the YMF289B (OPL3-L) describes the following method:&lt;br /&gt;
&lt;br /&gt;
# Detect OPL2. All OPL3 devices should succeed OPL2 checks.&lt;br /&gt;
# Read status register: read port base+0.&lt;br /&gt;
# AND the result with 06h.&lt;br /&gt;
# If the result is zero, you have OPL3, otherwise OPL2.&lt;br /&gt;
&lt;br /&gt;
The OPL3-L can further be discerned from OPL3 by attempting to read registers on the OPL3-L. This is not possible on the OPL3.&lt;br /&gt;
&lt;br /&gt;
Another possible detection method for distinguishing between SB Pro I and SB Pro II would be to try to detect OPL2 at I/O port base+0 and then at port base+2. The first test should succeed and the second should fail if OPL3 is present. (Remember: SB Pro I contains twin OPL2 chips at addresses base+0 and base+2, while SB Pro II contains one OPL3 chip at I/O address base+0 thru base+3).&lt;br /&gt;
&lt;br /&gt;
== BLASTER Environment Variable ==&lt;br /&gt;
&lt;br /&gt;
Perhaps the most recommended &amp;quot;detection&amp;quot; method. Reading this variable avoids blindfold I/O port scanning and possible device conflicts. The user is responsible for its proper setting.&lt;br /&gt;
&lt;br /&gt;
The variable has this format:&lt;br /&gt;
&lt;br /&gt;
 BLASTER=Aaddr Iirq Ddma Ttype&lt;br /&gt;
&lt;br /&gt;
* A: Base I/O address given in hex. For most Sound Blasters the default is 220.&lt;br /&gt;
* I: IRQ Number (decimal). Default 7.&lt;br /&gt;
* D: DMA Number (decimal). Default 1.&lt;br /&gt;
* T: Card Type (decimal):&lt;br /&gt;
** 1 - Sound Blaster 1.5&lt;br /&gt;
** 2 - Sound Blaster Pro I&lt;br /&gt;
** 3 - Sound Blaster 2.0&lt;br /&gt;
** 4 - Sound Blaster Pro II&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 BLASTER=A220 I7 D1 T4&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The PC Games Programmers Encyclopedia&#039;&#039;, Mark Feldman and many others on Usenet and Internet, http://bespin.org/~qz/pc-gpe/&lt;br /&gt;
: ... you can find (almost) everything you need there&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sound Blaster - The Official Book&#039;&#039;, Richard Heimlich, David M. Golden, Ivan Luk, Peter M. Ridge, Osborne/McGraw Hill, ISBN 0-07-881907-5&lt;br /&gt;
: ... this is a number-one in my book-wishlist. If anyone wanted to get rid of the book, I wouldn&#039;t scorn it ... :-)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The SoundBlaster Developer Kit&#039;&#039;, Creative Labs Inc, Creative Technology PTE LTD&lt;br /&gt;
: ... I wonder if you can find something comprehensible in that.&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=User:SaxxonPike&amp;diff=11876</id>
		<title>User:SaxxonPike</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=User:SaxxonPike&amp;diff=11876"/>
		<updated>2024-04-19T22:06:27Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Not using Twitter these days.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m SaxxonPike. I like to decipher game formats and write programs that modify game files. My ongoing interest in deciphering Bemani game formats has led me to discover a lot of tricks as well as techniques to more quickly discover formats and encryption schemes.&lt;br /&gt;
&lt;br /&gt;
My recent interests that pertain to this Wiki are [[ZZT]], [[Jill of the Jungle]], [[Kiloblaster]], and [[Xargon]].&lt;br /&gt;
&lt;br /&gt;
== Did I miss something? ==&lt;br /&gt;
&lt;br /&gt;
Contact me.&lt;br /&gt;
&lt;br /&gt;
E-mail: [mailto:saxxonpike@gmail.com saxxonpike@gmail.com]&lt;br /&gt;
&lt;br /&gt;
Social links: [https://saxxon.carrd.co saxxon.carrd.co]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Crunched_Screen_Image&amp;diff=8399</id>
		<title>Crunched Screen Image</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Crunched_Screen_Image&amp;diff=8399"/>
		<updated>2019-03-06T17:54:09Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Describe where the format came from.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Crunched Screen Image is an exported format from an ASCII graphics editing program called [[TheDraw]].&lt;br /&gt;
&lt;br /&gt;
This format is also used to store compressed text screens in various titles by Epic Megagames, including [[Super ZZT]], [[Jill of the Jungle]], [[Kiloblaster]] and [[Xargon]] where the hardware configuration screens (and sometimes ending screens) are stored in this format. Some menu programs also use this format to store text-based menu, ordering info and ending screens.&lt;br /&gt;
&lt;br /&gt;
The [[Xargon]] source code refers to this data format as &amp;quot;TheDraw C Crunched Screen Image&amp;quot; in &amp;lt;tt&amp;gt;CFG_WIN.H&amp;lt;/tt&amp;gt;. [[Kiloblaster]]&#039;s source code uses the same name in &amp;lt;tt&amp;gt;BEGIN.H&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
There is no header information for this format. It is read as a stream of bytes until the Y-position goes off the bottom (row 25). The &amp;lt;tt&amp;gt;uncrunch&amp;lt;/tt&amp;gt; algorithm found in the [[Xargon]] and [[Kiloblaster]] source code takes the length of the compressed block as a parameter and stops decompressing once all bytes have been processed.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;uncrunch&amp;lt;/tt&amp;gt; decompression starts with the text attributes set to 0 (black text on black background, not blinking). The text usually appears at the top left corner of the text screen.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value!!Description&lt;br /&gt;
|-&lt;br /&gt;
|00-0F||Set the foreground color of following output to this value.&lt;br /&gt;
|-&lt;br /&gt;
|10-17||Set the background color of following output to the lower 4 bits of this value.&lt;br /&gt;
|-&lt;br /&gt;
|18||Go to the beginning of the following text line.&lt;br /&gt;
|-&lt;br /&gt;
|19||Read one more byte &#039;&#039;n&#039;&#039;, and output a space character &#039;&#039;n&#039;&#039;+1 times.&lt;br /&gt;
|-&lt;br /&gt;
|1A||Read two more bytes &#039;&#039;n&#039;&#039; and &#039;&#039;char&#039;&#039;, and output &#039;&#039;char&#039;&#039; for &#039;&#039;n&#039;&#039;+1 times.&lt;br /&gt;
|-&lt;br /&gt;
|1B||Toggle blinking text on/off&lt;br /&gt;
|-&lt;br /&gt;
|1C-1F||Undefined (&amp;lt;tt&amp;gt;uncrunch&amp;lt;/tt&amp;gt; just skips these)&lt;br /&gt;
|-&lt;br /&gt;
|20-FF||Output this character exactly.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
These graphics cannot be found or used outside the game executable. They are referenced directly by the code and compiled into the game engine itself.&lt;br /&gt;
&lt;br /&gt;
[[Category:Super ZZT]]&lt;br /&gt;
[[Category:Jill of the Jungle]]&lt;br /&gt;
[[Category:Kiloblaster]]&lt;br /&gt;
[[Category:Xargon]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Crunched_Screen_Image&amp;diff=8398</id>
		<title>Crunched Screen Image</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Crunched_Screen_Image&amp;diff=8398"/>
		<updated>2019-03-06T17:38:44Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add game categories.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A special format is used internally by [[Super ZZT]] to draw the title screen and ending screen graphics. The format assumes a 80x25 display window.&lt;br /&gt;
&lt;br /&gt;
The same format is also used to store compressed text screens in various other titles by Epic Megagames, including [[Jill of the Jungle]], [[Kiloblaster]] and [[Xargon]] where the hardware configuration screens (and sometimes ending screens) are stored in this format. Some menu programs also use this format to store text-based menu, ordering info and ending screens.&lt;br /&gt;
&lt;br /&gt;
The [[Xargon]] source code refers to this data format as &amp;quot;TheDraw C Crunched Screen Image&amp;quot; in &amp;lt;tt&amp;gt;CFG_WIN.H&amp;lt;/tt&amp;gt;. [[Kiloblaster]]&#039;s source code uses the same name in &amp;lt;tt&amp;gt;BEGIN.H&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
There is no header information for this format. It is read as a stream of bytes until the Y-position goes off the bottom (row 25). The &amp;lt;tt&amp;gt;uncrunch&amp;lt;/tt&amp;gt; algorithm found in the [[Xargon]] and [[Kiloblaster]] source code takes the length of the compressed block as a parameter and stops decompressing once all bytes have been processed.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;uncrunch&amp;lt;/tt&amp;gt; decompression starts with the text attributes set to 0 (black text on black background, not blinking). The text usually appears at the top left corner of the text screen.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value!!Description&lt;br /&gt;
|-&lt;br /&gt;
|00-0F||Set the foreground color of following output to this value.&lt;br /&gt;
|-&lt;br /&gt;
|10-17||Set the background color of following output to the lower 4 bits of this value.&lt;br /&gt;
|-&lt;br /&gt;
|18||Go to the beginning of the following text line.&lt;br /&gt;
|-&lt;br /&gt;
|19||Read one more byte &#039;&#039;n&#039;&#039;, and output a space character &#039;&#039;n&#039;&#039;+1 times.&lt;br /&gt;
|-&lt;br /&gt;
|1A||Read two more bytes &#039;&#039;n&#039;&#039; and &#039;&#039;char&#039;&#039;, and output &#039;&#039;char&#039;&#039; for &#039;&#039;n&#039;&#039;+1 times.&lt;br /&gt;
|-&lt;br /&gt;
|1B||Toggle blinking text on/off&lt;br /&gt;
|-&lt;br /&gt;
|1C-1F||Undefined (&amp;lt;tt&amp;gt;uncrunch&amp;lt;/tt&amp;gt; just skips these)&lt;br /&gt;
|-&lt;br /&gt;
|20-FF||Output this character exactly.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
These graphics cannot be found or used outside the game executable. They are referenced directly by the code and compiled into the game engine itself.&lt;br /&gt;
&lt;br /&gt;
[[Category:Super ZZT]]&lt;br /&gt;
[[Category:Jill of the Jungle]]&lt;br /&gt;
[[Category:Kiloblaster]]&lt;br /&gt;
[[Category:Xargon]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=8397</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=8397"/>
		<updated>2019-03-06T17:37:00Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add ZZT and Super ZZT categories.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Savegame = Yes&lt;br /&gt;
 | Where = ?&lt;br /&gt;
 | Elements = Ammo, gems, keys, scores, many others&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|ZZT}}&lt;br /&gt;
   {{Game|Super ZZT}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the game engine and will be converted to empty padding. [[ZZTAE]] is an editor that uses this space to store extra information such as the author and genre.&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
Unused values are preserved. Data not listed here is overwritten with zeroes when saving worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|265||0x109||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
Unused values are preserved. Data not listed here is overwritten with zeroes when saving worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|-&lt;br /&gt;
|391||0x187||[[UINT8]][11]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:Super ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=8396</id>
		<title>Super ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=8396"/>
		<updated>2019-03-06T17:35:46Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add Super ZZT category.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
Super ZZT is an object-oriented game scripting engine created by Tim Sweeney. It is based on the same code as [[ZZT]], with a number of notable improvements and changes. There were 3 worlds released with the commercial version of the game: PROVING, FOREST, and MONSTER. The shareware version of Super ZZT came with just MONSTER.&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code during gameplay. Using the +debug cheat enables the display of how much memory is available on the heap, in bytes. In the upper-left corner, it will show the letter &#039;m&#039; followed by this value. OOP code on the currently shown board and the game&#039;s entire compressed board data consume heap memory.&lt;br /&gt;
&lt;br /&gt;
== Editor ==&lt;br /&gt;
&lt;br /&gt;
While Super ZZT features a world editor, it was considered too buggy for release and was hidden from users. However, the ZZT community was eventually able to locate the command line switch to enable the use of the built-in editor. It can be enabled from the command line using &amp;quot;SUPERZ /E&amp;quot; to start the game, and then opened by pressing &amp;quot;E&amp;quot; at the title screen.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v2.0. The only other known version is v1.1. There are no observable differences between the two versions of the game aside from the opening and closing screens.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| 53,924 (108,288)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 54,076 (109,072)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[HI Format (ZZT)|HGS Format]] - High scores.&lt;br /&gt;
* [[SZT Format]] - World format.&lt;br /&gt;
* [[Crunched Screen Image]] - Format of the ANSI art on the title screen and the exit screen.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:Super ZZT]]&lt;br /&gt;
[[Category:Game Intro Page]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Binary_Text_Format_(ZZT)&amp;diff=8395</id>
		<title>Binary Text Format (ZZT)</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Binary_Text_Format_(ZZT)&amp;diff=8395"/>
		<updated>2019-03-06T17:32:28Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add initial docs for this format.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This format is used to store text in later versions of [[ZZT]].&lt;br /&gt;
&lt;br /&gt;
== Outside of ZZT.DAT ==&lt;br /&gt;
&lt;br /&gt;
In version 2.0, there is no ZZT.DAT to contain text files. Therefore, all its help and end messages&lt;br /&gt;
are stored in plain text. Line endings are 0D 0A.&lt;br /&gt;
&lt;br /&gt;
End messages may also have 0x1A at the end of the file to indicate that it is, in fact, EOF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Embedded in ZZT.DAT ==&lt;br /&gt;
&lt;br /&gt;
When ZZT loads text from ZZT.DAT, help and end messages are similar to standard text files with a couple extra rules:&lt;br /&gt;
&lt;br /&gt;
* Carriage return and line feed characters (0D, 0A) are omitted.&lt;br /&gt;
* A line consisting of a single &#039;@&#039; character indicates the end of the file.&lt;br /&gt;
** This line is not shown to the user.&lt;br /&gt;
&lt;br /&gt;
Each line of text is stored as a byte indicating the length of the line, followed by the line characters.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||Length of the line of text&lt;br /&gt;
|-&lt;br /&gt;
|[[char]][length]||Line of text&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=8394</id>
		<title>ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=8394"/>
		<updated>2019-03-06T16:40:36Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
ZZT is a game creation system created by Tim Sweeney in 1991, the first game developed and published by Potomac Computer Systems (later Epic Megagames, now Epic Games.) There were 4 worlds released with the commercial version of the game: TOWN, CAVES, CITY, and DUNGEONS. The shareware version of ZZT came with just TOWN. In all versions of the game, the built-in world editor is fully functional (however, it will not edit saved games or locked worlds natively.)&lt;br /&gt;
&lt;br /&gt;
Later, [[Super ZZT]] was released based on this engine.&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code. In versions prior to v3.2, standard cheats will not work until the +debug cheat is used. This also enables the display of how much memory is available on the heap, in bytes. In the upper-right corner, it will show the letter &#039;m&#039; followed by this value. OOP code on the currently shown board and the game&#039;s entire compressed board data consume heap memory.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v3.2. Other versions of the game that can be found are v3.1, v3.0, and v2.0. Aside from improvements in input handling and visual appearance, cheat availability and copyright messages, there are no observable differences between these versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 89,792 (89,792)&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| 47,473 (95,440)&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| 47,471 (95,616)&lt;br /&gt;
|-&lt;br /&gt;
| 3.2&lt;br /&gt;
| 47,764 (96,080)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[CFG Format (ZZT)|CFG Format]] - ZZT.CFG contains the startup configuration and serial number.&lt;br /&gt;
* [[DAT Format (ZZT)|DAT Format]] - In 3.0 and later, ZZT.DAT contains help files and end screen messages. This is not present in 2.0; the files are stored in the directory.&lt;br /&gt;
* [[HI Format (ZZT)|HI Format]] - High scores.&lt;br /&gt;
* [[Binary Text Format (ZZT)|HLP Format]] - In 2.0, these are standard text files. In 3.0 and later, they are encoded differently.&lt;br /&gt;
* [[Binary Text Format (ZZT)|MSG Format]] - In 2.0, these are standard text files. In 3.0 and later, they are encoded differently.&lt;br /&gt;
* [[ZZT Format|SAV Format]] - Saved games, 100% identical to world files except a byte in the header.&lt;br /&gt;
* [[ZZT Format]] - World format.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=DAT_Format_(ZZT)&amp;diff=8393</id>
		<title>DAT Format (ZZT)</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=DAT_Format_(ZZT)&amp;diff=8393"/>
		<updated>2019-03-06T01:05:08Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Start the ZZT.DAT page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Starting with [[ZZT]] version 3.0, a special archive exists that contains all the [[MSG Format (ZZT)|MSG]] and [[HLP Format (ZZT)|HLP]] files.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
ZZT will search its own directory first when looking for a particular file. If the file can&#039;t be found there, it will look inside ZZT.DAT. This allows for game modification without actually modifying any of the original files.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||Number of files in the archive&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||fileName[24]||Start of the file name list&lt;br /&gt;
|-&lt;br /&gt;
|1226||0x4CA||[[INT32LE]][24]||Start of the file offset list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are 24 file names. ZZT will read through them until it encounters a zero-length string. That&#039;s how it determines that it has reached the end of the file list.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
| +0||[[UINT8]]||Length of the file name&lt;br /&gt;
|-&lt;br /&gt;
| +1||[[char]][50]||File name, with padding&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Extracting Files ===&lt;br /&gt;
&lt;br /&gt;
There is nothing to indicate the actual stored length of the files. Therefore, it&#039;s important to know how to parse the format of the file that is being requested in order to know when the file actually ends.&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=HI_Format_(ZZT)&amp;diff=8392</id>
		<title>HI Format (ZZT)</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=HI_Format_(ZZT)&amp;diff=8392"/>
		<updated>2019-03-06T00:46:05Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add count of high scores.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ZZT]] and [[Super ZZT]] high scores are stored very similarly, with the only difference being the stored length of the player&#039;s name.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Game!!Stored Length of Player&#039;s Name&lt;br /&gt;
|-&lt;br /&gt;
|ZZT||50 bytes&lt;br /&gt;
|-&lt;br /&gt;
|Super ZZT||60 bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
This data structure appears a total of 30 times.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||Actual Length of Player&#039;s Name&lt;br /&gt;
|-&lt;br /&gt;
|[[char]][storedLength]||Player&#039;s Name including padding&lt;br /&gt;
|-&lt;br /&gt;
|[[INT16LE]]||Score&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Entries with scores less than zero are omitted from the High Score list.&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:Super ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=8391</id>
		<title>Super ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=8391"/>
		<updated>2019-03-06T00:45:16Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Correct some links.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
Super ZZT is an object-oriented game scripting engine created by Tim Sweeney. It is based on the same code as [[ZZT]], with a number of notable improvements and changes. There were 3 worlds released with the commercial version of the game: PROVING, FOREST, and MONSTER. The shareware version of Super ZZT came with just MONSTER.&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code during gameplay. Using the +debug cheat enables the display of how much memory is available on the heap, in bytes. In the upper-left corner, it will show the letter &#039;m&#039; followed by this value. OOP code on the currently shown board and the game&#039;s entire compressed board data consume heap memory.&lt;br /&gt;
&lt;br /&gt;
== Editor ==&lt;br /&gt;
&lt;br /&gt;
While Super ZZT features a world editor, it was considered too buggy for release and was hidden from users. However, the ZZT community was eventually able to locate the command line switch to enable the use of the built-in editor. It can be enabled from the command line using &amp;quot;SUPERZ /E&amp;quot; to start the game, and then opened by pressing &amp;quot;E&amp;quot; at the title screen.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v2.0. The only other known version is v1.1. There are no observable differences between the two versions of the game aside from the opening and closing screens.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| 53,924 (108,288)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 54,076 (109,072)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[HI Format (ZZT)|HGS Format]] - High scores.&lt;br /&gt;
* [[SZT Format]] - World format.&lt;br /&gt;
* [[Crunched Screen Image]] - Format of the ANSI art on the title screen and the exit screen.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:Game Intro Page]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=HI_Format_(ZZT)&amp;diff=8390</id>
		<title>HI Format (ZZT)</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=HI_Format_(ZZT)&amp;diff=8390"/>
		<updated>2019-03-06T00:43:59Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add links.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ZZT]] and [[Super ZZT]] high scores are stored very similarly, with the only difference being the stored length of the player&#039;s name.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Game!!Stored Length of Player&#039;s Name&lt;br /&gt;
|-&lt;br /&gt;
|ZZT||50 bytes&lt;br /&gt;
|-&lt;br /&gt;
|Super ZZT||60 bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||Actual Length of Player&#039;s Name&lt;br /&gt;
|-&lt;br /&gt;
|[[char]][storedLength]||Player&#039;s Name including padding&lt;br /&gt;
|-&lt;br /&gt;
|[[INT16LE]]||Score&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Entries with scores less than zero are omitted from the High Score list.&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:Super ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=HI_Format_(ZZT)&amp;diff=8389</id>
		<title>HI Format (ZZT)</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=HI_Format_(ZZT)&amp;diff=8389"/>
		<updated>2019-03-06T00:43:10Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Get high score formats for ZZT and Super ZZT started.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ZZT and Super ZZT high scores are stored very similarly, with the only difference being the stored length of the player&#039;s name.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Game!!Stored Length of Player&#039;s Name&lt;br /&gt;
|-&lt;br /&gt;
|ZZT||50 bytes&lt;br /&gt;
|-&lt;br /&gt;
|Super ZZT||60 bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||Actual Length of Player&#039;s Name&lt;br /&gt;
|-&lt;br /&gt;
|[[char]][storedLength]||Player&#039;s Name including padding&lt;br /&gt;
|-&lt;br /&gt;
|[[INT16LE]]||Score&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Entries with scores less than zero are omitted from the High Score list.&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Jill_of_the_Jungle&amp;diff=8388</id>
		<title>Jill of the Jungle</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Jill_of_the_Jungle&amp;diff=8388"/>
		<updated>2019-03-06T00:07:53Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Point to the page describing the ordering info format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = None&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = Edit&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = Edit&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Jill of the Jungle]] is the first version of the engine which would go on to power [[Xargon]].  It supports CGA, EGA and VGA graphics by way of &amp;quot;colour maps&amp;quot;, which dictate the CGA and EGA colours to be used to display each of the possible 256-colours of a given image.  This way only a single 256-colour image is supplied, rather than a different image for each display.&lt;br /&gt;
&lt;br /&gt;
Jill is also unique in that it is one of a very small number of games that include a level editor, albeit an undocumented one.  See the [[Using the official Jill of the Jungle level editor|tutorial]] for more details.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
{{BeginFileFormatTools|Type=game}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [[Using the official Jill of the Jungle level editor|Built-in editor]]&lt;br /&gt;
| Platform = DOS&lt;br /&gt;
| grp = N/A&lt;br /&gt;
| map = Edit&lt;br /&gt;
| gfx = No&lt;br /&gt;
| mus = No&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = No&lt;br /&gt;
| sav = No&lt;br /&gt;
| exe = No&lt;br /&gt;
}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [[Camoto]]&lt;br /&gt;
| Platform = Linux/Windows&lt;br /&gt;
| grp = N/A&lt;br /&gt;
| map = Edit&lt;br /&gt;
| gfx = Read&lt;br /&gt;
| mus = Edit&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = No&lt;br /&gt;
| sav = No&lt;br /&gt;
| exe = No&lt;br /&gt;
}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [http://ftp.funet.fi/pub/msdos/games/editors/jilledit.zip JillEdit] [http://www.stuntsillusion.com/download/jilledit.zip (mirror)]&lt;br /&gt;
| Platform = DOS&lt;br /&gt;
| grp = N/A&lt;br /&gt;
| map = Edit&lt;br /&gt;
| gfx = No&lt;br /&gt;
| mus = No&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = No&lt;br /&gt;
| sav = No&lt;br /&gt;
| exe = No&lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.cfg&lt;br /&gt;
 | Format = [[CFG Format (Jill of the Jungle)]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Game configuration&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.ddt&lt;br /&gt;
 | Format = [[CMF Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Background music&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = jill,dma&lt;br /&gt;
 | Format = [[DMA Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Tile information&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.jn[123]&lt;br /&gt;
 | Format = [[Jill of the Jungle Map Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Game levels&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.mac&lt;br /&gt;
 | Format = [[MAC Format (Jill of the Jungle)]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Demo macros&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.sha&lt;br /&gt;
 | Format = [[SHA Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Shapes (images/tiles)&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.vcl&lt;br /&gt;
 | Format = [[VCL Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Sound and text assets&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = jn[123]save.[0-9]&lt;br /&gt;
 | Format = [[Jill of the Jungle Map Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Saved games - just dumps of the entire level in its current state&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== Palette  ==&lt;br /&gt;
[[Image:Jill of the Jungle palette.png|thumb|right|128px|Jill of the Jungle palette]]&lt;br /&gt;
The VGA palette can be found inside the .EXE file. The palette is the same in all episodes and versions.&lt;br /&gt;
&lt;br /&gt;
==== Episode 1: Jill of the Jungle ====&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Version!!CRC32!!Date!!Size!!Palette Offset&lt;br /&gt;
|-&lt;br /&gt;
|1.0||7899CC28||1992-06-01||216 804 bytes||0x1ED84&lt;br /&gt;
|-&lt;br /&gt;
|1.2||9540714E||1992-07-12||204 784 bytes||0x1F884&lt;br /&gt;
|-&lt;br /&gt;
|1.2(a)||51ADAE83||1992-07-30||206 963 bytes||0x1FD54&lt;br /&gt;
|-&lt;br /&gt;
|1.2(b)||171E9EC0||1992-08-21||206 712 bytes||0x1FC34&lt;br /&gt;
|-&lt;br /&gt;
|1.2(c)||C52CA6D9||1993-02-17||206 636 bytes||0x1FC04&lt;br /&gt;
|-&lt;br /&gt;
|1.2(d)||0E7C596F||1993-12-27||219 216 bytes||0x24A64&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Episode 2: Jill Goes Underground ====&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Version!!CRC32!!Date!!Size!!Palette Offset&lt;br /&gt;
|-&lt;br /&gt;
|1.0||6064EA0A||1992-06-17||65 166* bytes||0x1F0B4&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|1.2(a)||?||1992-07-30||?||?&lt;br /&gt;
|-&lt;br /&gt;
|1.2(b)||17477A49||1992-08-21||204 158 bytes||0x1F6E4&lt;br /&gt;
|-&lt;br /&gt;
|1.2(c)||75176ED7||1993-02-17||204 096 bytes||0x1F6B4&lt;br /&gt;
|-&lt;br /&gt;
|1.2(d)||0FDB489E||1993-12-27||218 338 bytes||0x26A64&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Episode 3: Jill Saves the Prince ====&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Version!!CRC32!!Date!!Size!!Palette Offset&lt;br /&gt;
|-&lt;br /&gt;
|1.0||3B4D8C3B||1992-07-07||201 616 bytes||0x1F1F4&lt;br /&gt;
|-&lt;br /&gt;
|1.2(a)||B4EA288C||1992-07-30||204 425 bytes||0x1F804&lt;br /&gt;
|-&lt;br /&gt;
|1.2(b)||D5345AFB||1992-08-21||204 174 bytes||0x1F6E4&lt;br /&gt;
|-&lt;br /&gt;
|1.2(c)||3FFF0F6C||1993-02-17||204 112 bytes||0x1F6B4&lt;br /&gt;
|-&lt;br /&gt;
|1.2(d)||E27D4300||1993-12-27||218 370 bytes||0x26A64&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;#42;This version has been packed using [[LZEXE|LZEXE91]].&amp;lt;br /&amp;gt;&lt;br /&gt;
†Data taken from version after uncompressing using [[UNLZEXE]].&lt;br /&gt;
&lt;br /&gt;
The palette is in [[VGA Palette|classic VGA format]] (6-bit RGB.)  Note that the [[SHA Format]] can override this palette.&lt;br /&gt;
&lt;br /&gt;
== Episode selection screen ==&lt;br /&gt;
&lt;br /&gt;
Some versions of Jill come bundled with an episode loader executable which displays an interactive screen that allows the player to select from three episodes (if present) and ordering info. The executable contains large amounts (About 90%) of raw data used to display the screen itself and the ordering info if selected. The selection screen uses a single image but various areas of it are faded in in sequence when the executable runs.&lt;br /&gt;
&lt;br /&gt;
The ordering info uses the [[Crunched Screen Image]] format.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data!!Location!!Size&lt;br /&gt;
|-&lt;br /&gt;
|Screen||04E7||64&#039;000 bytes&lt;br /&gt;
|-&lt;br /&gt;
|Screen palette||FEE7||768 bytes&lt;br /&gt;
|-&lt;br /&gt;
|Order info||12AF2||23&#039;630 bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Since the level files are used for a lot of different things, you can e.g. swap &amp;lt;tt&amp;gt;INTRO.JN1&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;1.JN1&amp;lt;/tt&amp;gt; and then when you load the first level you&#039;ll be playing the intro screen.  The demo and help screens can be accessed in the same way.&lt;br /&gt;
* You can also press Ctrl+P on the main menu to play the intro level, and Ctrl+E to enter the [[Using the official Jill of the Jungle level editor|level editor]].&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://jillofthejungle.110mb.com/home.html Unofficial Jill of the Jungle page] ([http://members.tripod.com/classic_roach/id14.html Older version], and [http://jill-of-the-jungle.tripod.com/jillsite/index.html alternate version])&lt;br /&gt;
* [http://ftp.funet.fi/pub/msdos/games/editors/jilledit.zip JillEdit] [http://www.stuntsillusion.com/download/jilledit.zip (mirror)] - a level editor for Jill of the Jungle created by Rory L. Fisher.&lt;br /&gt;
* [http://www.vgmaps.com/Atlas/PC/index.htm#JillOfTheJungle vgmaps.com] - all Jill maps as image files&lt;br /&gt;
* [http://www.youtube.com/watch?v=_88gJZoLpyc &amp;quot;Funky&amp;quot; remix] by Nick Stubblefield&lt;br /&gt;
* [http://www.openjill.org/ OpenJill] - open-source clone of Jill written in Java ([https://github.com/bubulemaster/openjill Github])&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:Sidescroller]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=8387</id>
		<title>Super ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=8387"/>
		<updated>2019-03-06T00:04:46Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Point graphics to the correct page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
Super ZZT is an object-oriented game scripting engine created by Tim Sweeney. It is based on the same code as [[ZZT]], with a number of notable improvements and changes. There were 3 worlds released with the commercial version of the game: PROVING, FOREST, and MONSTER. The shareware version of Super ZZT came with just MONSTER.&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code during gameplay. Using the +debug cheat enables the display of how much memory is available on the heap, in bytes. In the upper-left corner, it will show the letter &#039;m&#039; followed by this value. OOP code on the currently shown board and the game&#039;s entire compressed board data consume heap memory.&lt;br /&gt;
&lt;br /&gt;
== Editor ==&lt;br /&gt;
&lt;br /&gt;
While Super ZZT features a world editor, it was considered too buggy for release and was hidden from users. However, the ZZT community was eventually able to locate the command line switch to enable the use of the built-in editor. It can be enabled from the command line using &amp;quot;SUPERZ /E&amp;quot; to start the game, and then opened by pressing &amp;quot;E&amp;quot; at the title screen.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v2.0. The only other known version is v1.1. There are no observable differences between the two versions of the game aside from the opening and closing screens.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| 53,924 (108,288)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 54,076 (109,072)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[HGS Format (Super ZZT)|HGS Format]] - High scores.&lt;br /&gt;
* [[SZT Format]] - World format.&lt;br /&gt;
* [[Crunched Screen Image|Graphics Format]] - Format of the ANSI art on the title screen and the exit screen.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:Game Intro Page]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT_Graphics_Format&amp;diff=8386</id>
		<title>Super ZZT Graphics Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT_Graphics_Format&amp;diff=8386"/>
		<updated>2019-03-06T00:00:51Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: SaxxonPike moved page Super ZZT Graphics Format to Crunched Screen Image: This is the known name for this format elsewhere from Super ZZT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Crunched Screen Image]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Crunched_Screen_Image&amp;diff=8385</id>
		<title>Crunched Screen Image</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Crunched_Screen_Image&amp;diff=8385"/>
		<updated>2019-03-06T00:00:51Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: SaxxonPike moved page Super ZZT Graphics Format to Crunched Screen Image: This is the known name for this format elsewhere from Super ZZT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A special format is used internally by [[Super ZZT]] to draw the title screen and ending screen graphics. The format assumes a 80x25 display window.&lt;br /&gt;
&lt;br /&gt;
The same format is also used to store compressed text screens in various other titles by Epic Megagames, including [[Jill of the Jungle]], [[Kiloblaster]] and [[Xargon]] where the hardware configuration screens (and sometimes ending screens) are stored in this format. Some menu programs also use this format to store text-based menu, ordering info and ending screens.&lt;br /&gt;
&lt;br /&gt;
The [[Xargon]] source code refers to this data format as &amp;quot;TheDraw C Crunched Screen Image&amp;quot; in &amp;lt;tt&amp;gt;CFG_WIN.H&amp;lt;/tt&amp;gt;. [[Kiloblaster]]&#039;s source code uses the same name in &amp;lt;tt&amp;gt;BEGIN.H&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
There is no header information for this format. It is read as a stream of bytes until the Y-position goes off the bottom (row 25). The &amp;lt;tt&amp;gt;uncrunch&amp;lt;/tt&amp;gt; algorithm found in the [[Xargon]] and [[Kiloblaster]] source code takes the length of the compressed block as a parameter and stops decompressing once all bytes have been processed.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;uncrunch&amp;lt;/tt&amp;gt; decompression starts with the text attributes set to 0 (black text on black background, not blinking). The text usually appears at the top left corner of the text screen.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value!!Description&lt;br /&gt;
|-&lt;br /&gt;
|00-0F||Set the foreground color of following output to this value.&lt;br /&gt;
|-&lt;br /&gt;
|10-17||Set the background color of following output to the lower 4 bits of this value.&lt;br /&gt;
|-&lt;br /&gt;
|18||Go to the beginning of the following text line.&lt;br /&gt;
|-&lt;br /&gt;
|19||Read one more byte &#039;&#039;n&#039;&#039;, and output a space character &#039;&#039;n&#039;&#039;+1 times.&lt;br /&gt;
|-&lt;br /&gt;
|1A||Read two more bytes &#039;&#039;n&#039;&#039; and &#039;&#039;char&#039;&#039;, and output &#039;&#039;char&#039;&#039; for &#039;&#039;n&#039;&#039;+1 times.&lt;br /&gt;
|-&lt;br /&gt;
|1B||Toggle blinking text on/off&lt;br /&gt;
|-&lt;br /&gt;
|1C-1F||Undefined (&amp;lt;tt&amp;gt;uncrunch&amp;lt;/tt&amp;gt; just skips these)&lt;br /&gt;
|-&lt;br /&gt;
|20-FF||Output this character exactly.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
These graphics cannot be found or used outside the game executable. They are referenced directly by the code and compiled into the game engine itself.&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Talk:Jill_of_the_Jungle&amp;diff=8380</id>
		<title>Talk:Jill of the Jungle</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Talk:Jill_of_the_Jungle&amp;diff=8380"/>
		<updated>2019-03-05T05:10:17Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Ordering Info same format as ZZT graphics? */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In my version of Jill of the Jungle, the palettes were found at these locations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Jill:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VGA to EGA conversion table @ 0x24964.&lt;br /&gt;
&lt;br /&gt;
VGA palette @ 0x24A64.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Jill2:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VGA to EGA conversion table @ 0x1F5B4.&lt;br /&gt;
&lt;br /&gt;
VGA palette @ 0x1F6B4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Jill3:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VGA to EGA conversion table @ 0x1F704.&lt;br /&gt;
&lt;br /&gt;
VGA palette @ 0x1F804.&lt;br /&gt;
&lt;br /&gt;
Some of them differ from the posted. Does anyone else have a different version? --[[User:SaxxonPike|SaxxonPike]] 16:10, 12 July 2010 (GMT)&lt;br /&gt;
:Not sure - is there an easy way to tell which version a given .exe is?  If so we should add a column to the table for the version number, so we can list the offsets for all known versions.  Maybe also a signature code so it&#039;s easy for a program to identify which version a given file is. -- [[User:Malvineous|Malvineous]] 22:49, 12 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
::I&#039;ve seen different versions of a couple of Epic games, like Jill of the Jungle, Jazz Jackrabbit, Epic Pinball, Silverball and Extreme Pinball, and I couldn&#039;t find a version number inside the .exe files or see a version number when running the game. The only way to see which version number a game has, is to read what the included Helpme.doc file says. And even that is not foolproof as I&#039;ve seen different .exe files with the same Helpme.doc file. Apogee surely did the version numbering a lot better than Epic :). [[User:Calvero|Calvero]] 11:17, 13 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::The HELPME.DOC files can be quite misleading, actually. I&#039;ve found a bunch of copies of the shareware episodes where the HELPME.DOC claims the game is version 2.0 when the game itself identifies itself by another version number (e.g. Solar Winds, version 2.0 in the .DOC and 1.1 in-game). Regarding Jill of the Jungle, there are &amp;quot;officially&amp;quot; (by officially I mean what they identify themselves as in the documents) only two recognized versions, 1.0 and 1.2. But there are also a number of revisions I&#039;ve found to version 1.2 which I personally call 1.2, 1.2a, 1.2b and 1.2c. I know for a fact all of these revisions except 1.2c also have matching registered versions (I&#039;m not too convinced that 1.2c actually had anything else than a shareware release). I have made a document some time ago to make it easier to identify these versions and it can be found from [http://aoebeta.110mb.com/Private/jill_versions.txt here] (the data is that of the main game EXE). --[[User:Litude|Litude]] 11:24, 15 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::Wow, would you mind including that info on the main Jill page?  I&#039;m happy to do it but might be better if you do the first edit so it goes against your name in the edit history.  Add an extra column for those palette offsets so we can add them in when we find them out for a particular version.  My Jill versions match up well with your list, except my Jill 1 v1.0 (216804) is dated 1992-06-01, one day earlier than in your list.  Also not sure if you&#039;re recording dates/versions of jjfile0.exe (the episode loader) because I&#039;m not sure where that came from as I didn&#039;t find it until relatively recently. -- [[User:Malvineous|Malvineous]] 11:38, 15 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::Alright, I&#039;ll try adding the info though I don&#039;t really mind having someone else adding them (I don&#039;t really care that much about getting credited for stuff). Regarding the modify date of version 1.0, you&#039;re absolutely right. It seems my finger slipped when putting together that document. JJFILE0.EXE first appeared in version 1.2a and was also present in version 1.2b, but it was removed in 1.2c (which is why I think its shareware only, can&#039;t see any other reason for its removal). I don&#039;t record the dates of that file as as far as I know there are only two versions of the file, one of which is present in version 1.2a and the other one which is present in 1.2b.--[[User:Litude|Litude]] 12:43, 15 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::The version that is called version 1.1 of Jill 1 on [http://www.classicdosgames.com/game/Jill_of_the_Jungle.html RGB Classic Games] is called version 1.2a here, but when you run the game it says it&#039;s the United kingdom version. It gets this version information from the file INTRO.JN1. So at least one version of the game has in-game version information :).&amp;lt;br&amp;gt;Through my own research I found out that only version 1.0 has the references to Commander Keen, Mario, Duke Nukem and Pac-Man in the map level. Can someone confirm this? It&#039;s possible to copy MAP.JN1 of version 1.0 to later versions to restore these references. [[User:Calvero|Calvero]] 15:42, 15 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::::That installer is mislabeled, check the documents and it&#039;s listed as being version 1.2 (there was no version 1.1 of the game as far as I know). I did check that version but didn&#039;t look through it thoroughly enough to notice that it has a modified INTRO.JN1, just concluded it was 1.2a. But that doesn&#039;t mean 1.2a was exclusively made for the United Kingdom, as you can find version 1.2a without this United Kingdom mention from [http://cd.textfiles.com/swheaven1/GAMES/JILL.ZIP here]. Regarding actual changes between the versions, I haven&#039;t really been looking into this but seeing as MAP.JN1 is identical in 1.2, 1.2a, 1.2b and 1.2c it seems likely. --[[User:Litude|Litude]] 16:01, 15 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::::While I can&#039;t confirm it, it has been discussed on the PCKF that the Commander Keen reference only appeared in early versions of Jill and for some reason it was later removed.  Which, being a Commander Keen forum, was then immediately followed by many &amp;quot;where I can get the original version&amp;quot; requests. -- [[User:Malvineous|Malvineous]] 14:07, 16 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Ordering Info same format as ZZT graphics? ==&lt;br /&gt;
&lt;br /&gt;
It looks like the Ordering Info format described under the Episode Selection Screen might match the graphics format used for Super ZZT:&lt;br /&gt;
&lt;br /&gt;
[[Super_ZZT_Graphics_Format]]&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
--[[User:SaxxonPike|SaxxonPike]] ([[User talk:SaxxonPike|talk]]) 05:10, 5 March 2019 (UTC)&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=CFG_Format_(ZZT)&amp;diff=8379</id>
		<title>CFG Format (ZZT)</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=CFG_Format_(ZZT)&amp;diff=8379"/>
		<updated>2019-03-05T04:32:02Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add ZZT category.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
&lt;br /&gt;
ZZT.CFG is supported in versions 3.0 and 3.2. While the format is somewhat different between the two versions, the overall layout of the file is the same: it&#039;s a text file with a series of fields, separated by newlines.&lt;br /&gt;
&lt;br /&gt;
Strangely enough, ZZT 3.1 does not appear to support ZZT.CFG at all.&lt;br /&gt;
&lt;br /&gt;
== 3.0 Format ==&lt;br /&gt;
&lt;br /&gt;
{{TODO|Figure out what on earth is going on with this config file. Most notably with the second, third, and seventh lines.}}&lt;br /&gt;
&lt;br /&gt;
Compared to 3.2, 3.0&#039;s config format is quite a bit more complex.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field/Line Number!!Optional!!Name!!Description&lt;br /&gt;
|-&lt;br /&gt;
|1||No||Input/Display Settings||This is a bitmask that contains some input and display settings. The following values are known (from least to most significant):&lt;br /&gt;
&lt;br /&gt;
# ?&lt;br /&gt;
# ?&lt;br /&gt;
# Keyboard enabled ({{TODO|Not quite sure about this one}}).&lt;br /&gt;
# ?&lt;br /&gt;
# Mouse enabled.&lt;br /&gt;
# Monochrome display.&lt;br /&gt;
# ?&lt;br /&gt;
# ?&lt;br /&gt;
|-&lt;br /&gt;
|2||No||Unknown||&lt;br /&gt;
|-&lt;br /&gt;
|3||No||Unknown||&lt;br /&gt;
|-&lt;br /&gt;
|4||No||Show Config Screen||If this value is set to 2, the config screen is shown. If it&#039;s set to 3, the config screen will be bypassed. If the mouse is enabled, setting this to 3 doesn&#039;t seem to do anything and will cause the config screen to be enabled. ({{TODO|Why are the values 2 and 3? Another bitmask? Need to investigate further.}})&lt;br /&gt;
|-&lt;br /&gt;
|5||Yes||Startup World File||The world file to load when ZZT is started, sans extension. If this is prepended by an asterisk (i.e. *TOWN), the ZZT editor will be disabled. If this is left blank, the editor will be enabled and TOWN will be used as the default world.&lt;br /&gt;
|-&lt;br /&gt;
|6||Yes||Registered Flag||If this is left blank or doesn&#039;t exist, the game acts like the shareware version. If this field contains any text (by default, the registered 3.2 build sets it to REGISTERED) it will act like the registered version. See [[#Registered vs. Shareware|below]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|7||Yes||Unknown||This field does not appear to be significant. In the default configuration this contains the string, &amp;quot;NONE.&amp;quot; In a shareware disk that was located recently, this is set to &amp;quot;Serial # 14054-3&amp;quot;, prepended with 32 spaces.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the ZZT.CFG file is missing or any of the required values are missing, the game will create a new ZZT.CFG file. If the optional fields are omitted, they will not be added to the config file. Unlike ZZT 3.2, 3.0 writes to this file after the initial configuration screen is shown.&lt;br /&gt;
&lt;br /&gt;
Take care not to write strings into the required fields. The game engine is expecting those fields to contain integers (or nothing), so if it&#039;s fed a string it&#039;s very likely to crash on startup.&lt;br /&gt;
&lt;br /&gt;
== 3.2 Format ==&lt;br /&gt;
&lt;br /&gt;
{{TODO|Verify that this section is accurate and that there are no hidden surprises left.}}&lt;br /&gt;
&lt;br /&gt;
ZZT 3.2&#039;s config file format is much simpler than 3.0&#039;s. It consists of two fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field/Line Number!!Optional!!Name!!Description&lt;br /&gt;
|-&lt;br /&gt;
|1||Yes||Startup World File||The world file to load when ZZT is started, sans extension. If this is prepended by an asterisk (i.e. *TOWN), the ZZT editor will be disabled. If this is left blank, the editor will be enabled and TOWN will be used as the default world.&lt;br /&gt;
|-&lt;br /&gt;
|2||Yes||Registered Flag||If this is left blank or doesn&#039;t exist, the game acts like the shareware version. If this field contains any text (by default, the registered 3.2 build sets it to REGISTERED) it will act like the registered version. See [[#Registered vs. Shareware|below]] for more information.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the ZZT.CFG file is missing or doesn&#039;t contain any information, the file will &#039;&#039;not&#039;&#039; be created by ZZT. The default world file will be set to TOWN, the editor will be enabled, and the registered flag will be disabled.&lt;br /&gt;
&lt;br /&gt;
== Registered vs. Shareware ==&lt;br /&gt;
&lt;br /&gt;
In practice, the &amp;quot;registered&amp;quot; flag doesn&#039;t make any significant difference. The help files are static, so setting this flag on the shareware release will still display ordering information in the welcome screen. Similarly, the registered version will still display the &amp;quot;Do not distribute&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
The only tangible difference is when you exit the game. If the registered flag is set, the outro message will read &amp;quot;Registered version -- Thank you for playing ZZT&amp;quot; regardless of whether or not you&#039;re using the shareware version. If it is not set, the freeware registered version will not display a message while the shareware version will display a nag screen.&lt;br /&gt;
&lt;br /&gt;
Aside from these small changes, there are no changes to gameplay or the functionality of the world editor.&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=8377</id>
		<title>Super ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=8377"/>
		<updated>2019-03-04T17:25:19Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add high score format.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
Super ZZT is an object-oriented game scripting engine created by Tim Sweeney. It is based on the same code as [[ZZT]], with a number of notable improvements and changes. There were 3 worlds released with the commercial version of the game: PROVING, FOREST, and MONSTER. The shareware version of Super ZZT came with just MONSTER.&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code during gameplay. Using the +debug cheat enables the display of how much memory is available on the heap, in bytes. In the upper-left corner, it will show the letter &#039;m&#039; followed by this value. OOP code on the currently shown board and the game&#039;s entire compressed board data consume heap memory.&lt;br /&gt;
&lt;br /&gt;
== Editor ==&lt;br /&gt;
&lt;br /&gt;
While Super ZZT features a world editor, it was considered too buggy for release and was hidden from users. However, the ZZT community was eventually able to locate the command line switch to enable the use of the built-in editor. It can be enabled from the command line using &amp;quot;SUPERZ /E&amp;quot; to start the game, and then opened by pressing &amp;quot;E&amp;quot; at the title screen.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v2.0. The only other known version is v1.1. There are no observable differences between the two versions of the game aside from the opening and closing screens.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| 53,924 (108,288)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 54,076 (109,072)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[HGS Format (Super ZZT)|HGS Format]] - High scores.&lt;br /&gt;
* [[SZT Format]] - World format.&lt;br /&gt;
* [[Super ZZT Graphics Format|Graphics Format]] - Format of the ANSI art on the title screen and the exit screen.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:Game Intro Page]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=8376</id>
		<title>ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=8376"/>
		<updated>2019-03-04T16:23:31Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add more formats to be filled in later.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
ZZT is a game creation system created by Tim Sweeney in 1991, the first game developed and published by Potomac Computer Systems (later Epic Megagames, now Epic Games.) There were 4 worlds released with the commercial version of the game: TOWN, CAVES, CITY, and DUNGEONS. The shareware version of ZZT came with just TOWN. In all versions of the game, the built-in world editor is fully functional (however, it will not edit saved games or locked worlds natively.)&lt;br /&gt;
&lt;br /&gt;
Later, [[Super ZZT]] was released based on this engine.&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code. In versions prior to v3.2, standard cheats will not work until the +debug cheat is used. This also enables the display of how much memory is available on the heap, in bytes. In the upper-right corner, it will show the letter &#039;m&#039; followed by this value. OOP code on the currently shown board and the game&#039;s entire compressed board data consume heap memory.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v3.2. Other versions of the game that can be found are v3.1, v3.0, and v2.0. Aside from improvements in input handling and visual appearance, cheat availability and copyright messages, there are no observable differences between these versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 89,792 (89,792)&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| 47,473 (95,440)&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| 47,471 (95,616)&lt;br /&gt;
|-&lt;br /&gt;
| 3.2&lt;br /&gt;
| 47,764 (96,080)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[CFG Format (ZZT)|CFG Format]] - ZZT.CFG contains the startup configuration and serial number.&lt;br /&gt;
* [[DAT Format (ZZT)|DAT Format]] - In 3.0 and later, ZZT.DAT contains help files and end screen messages. This is not present in 2.0; the files are stored in the directory.&lt;br /&gt;
* [[HI Format (ZZT)|HI Format]] - High scores.&lt;br /&gt;
* [[HLP Format (ZZT)|HLP Format]] - Help file format.&lt;br /&gt;
* [[MSG Format (ZZT)|MSG Format]] - Stores end game messages.&lt;br /&gt;
* [[ZZT Format|SAV Format]] - Saved games, 100% identical to world files except a byte in the header.&lt;br /&gt;
* [[ZZT Format]] - World format.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=User:SaxxonPike&amp;diff=6925</id>
		<title>User:SaxxonPike</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=User:SaxxonPike&amp;diff=6925"/>
		<updated>2016-07-27T16:27:03Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Use actual game links.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m SaxxonPike. I like to decipher game formats and write programs that modify game files. My ongoing interest in deciphering Bemani game formats has led me to discover a lot of tricks as well as techniques to more quickly discover formats and encryption schemes.&lt;br /&gt;
&lt;br /&gt;
My recent interests that pertain to this Wiki are [[ZZT]], [[Jill of the Jungle]], [[Kiloblaster]], and [[Xargon]].&lt;br /&gt;
&lt;br /&gt;
== Did I miss something? ==&lt;br /&gt;
&lt;br /&gt;
Contact me.&lt;br /&gt;
&lt;br /&gt;
E-mail: [mailto:saxxonpike@gmail.com saxxonpike@gmail.com]&lt;br /&gt;
&lt;br /&gt;
Twitter [https://twitter.com/saxxonfox @SaxxonFox]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=6924</id>
		<title>Super ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=6924"/>
		<updated>2016-07-27T16:16:10Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add information about the heap in Super ZZT.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
Super ZZT is an object-oriented game scripting engine created by Tim Sweeney. It is based on the same code as [[ZZT]], with a number of notable improvements and changes. There were 3 worlds released with the commercial version of the game: PROVING, FOREST, and MONSTER. The shareware version of Super ZZT came with just MONSTER.&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code during gameplay. Using the +debug cheat enables the display of how much memory is available on the heap, in bytes. In the upper-left corner, it will show the letter &#039;m&#039; followed by this value. OOP code on the currently shown board and the game&#039;s entire compressed board data consume heap memory.&lt;br /&gt;
&lt;br /&gt;
== Editor ==&lt;br /&gt;
&lt;br /&gt;
While Super ZZT features a world editor, it was considered too buggy for release and was hidden from users. However, the ZZT community was eventually able to locate the command line switch to enable the use of the built-in editor. It can be enabled from the command line using &amp;quot;SUPERZ /E&amp;quot; to start the game, and then opened by pressing &amp;quot;E&amp;quot; at the title screen.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v2.0. The only other known version is v1.1. There are no observable differences between the two versions of the game aside from the opening and closing screens.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| 53,924 (108,288)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 54,076 (109,072)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[SZT Format]] - World format.&lt;br /&gt;
* [[Super ZZT Graphics Format|Graphics Format]] - Format of the ANSI art on the title screen and the exit screen.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:Game Intro Page]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=6923</id>
		<title>ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=6923"/>
		<updated>2016-07-27T16:14:58Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Game info */ Info about Super ZZT.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
ZZT is a game creation system created by Tim Sweeney in 1991, the first game developed and published by Potomac Computer Systems (later Epic Megagames, now Epic Games.) There were 4 worlds released with the commercial version of the game: TOWN, CAVES, CITY, and DUNGEONS. The shareware version of ZZT came with just TOWN. In all versions of the game, the built-in world editor is fully functional (however, it will not edit saved games or locked worlds natively.)&lt;br /&gt;
&lt;br /&gt;
Later, [[Super ZZT]] was released based on this engine.&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code. In versions prior to v3.2, standard cheats will not work until the +debug cheat is used. This also enables the display of how much memory is available on the heap, in bytes. In the upper-right corner, it will show the letter &#039;m&#039; followed by this value. OOP code on the currently shown board and the game&#039;s entire compressed board data consume heap memory.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v3.2. Other versions of the game that can be found are v3.1, v3.0, and v2.0. Aside from improvements in input handling and visual appearance, cheat availability and copyright messages, there are no observable differences between these versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 89,792 (89,792)&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| 47,473 (95,440)&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| 47,471 (95,616)&lt;br /&gt;
|-&lt;br /&gt;
| 3.2&lt;br /&gt;
| 47,764 (96,080)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[HI Format (ZZT)|HI Format]] - High scores.&lt;br /&gt;
* [[ZZT Format|SAV Format]] - Saved games, 100% identical to world files except a byte in the header.&lt;br /&gt;
* [[ZZT Format]] - World format.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=6922</id>
		<title>ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=6922"/>
		<updated>2016-07-27T16:13:41Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Debug mode */ Info about the heap.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
ZZT is a game creation system created by Tim Sweeney in 1991, the first game developed and published by Potomac Computer Systems (later Epic Megagames, now Epic Games.) There were 4 worlds released with the commercial version of the game: TOWN, CAVES, CITY, and DUNGEONS. The shareware version of ZZT came with just TOWN. In all versions of the game, the built-in world editor is fully functional (however, it will not edit saved games or locked worlds natively.)&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code. In versions prior to v3.2, standard cheats will not work until the +debug cheat is used. This also enables the display of how much memory is available on the heap, in bytes. In the upper-right corner, it will show the letter &#039;m&#039; followed by this value. OOP code on the currently shown board and the game&#039;s entire compressed board data consume heap memory.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v3.2. Other versions of the game that can be found are v3.1, v3.0, and v2.0. Aside from improvements in input handling and visual appearance, cheat availability and copyright messages, there are no observable differences between these versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 89,792 (89,792)&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| 47,473 (95,440)&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| 47,471 (95,616)&lt;br /&gt;
|-&lt;br /&gt;
| 3.2&lt;br /&gt;
| 47,764 (96,080)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[HI Format (ZZT)|HI Format]] - High scores.&lt;br /&gt;
* [[ZZT Format|SAV Format]] - Saved games, 100% identical to world files except a byte in the header.&lt;br /&gt;
* [[ZZT Format]] - World format.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=6921</id>
		<title>ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT&amp;diff=6921"/>
		<updated>2016-07-27T16:10:30Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Debug information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
ZZT is a game creation system created by Tim Sweeney in 1991, the first game developed and published by Potomac Computer Systems (later Epic Megagames, now Epic Games.) There were 4 worlds released with the commercial version of the game: TOWN, CAVES, CITY, and DUNGEONS. The shareware version of ZZT came with just TOWN. In all versions of the game, the built-in world editor is fully functional (however, it will not edit saved games or locked worlds natively.)&lt;br /&gt;
&lt;br /&gt;
== Debug mode ==&lt;br /&gt;
&lt;br /&gt;
In all versions, the cheat menu can be opened by pressing ? and typing in a code. In versions prior to v3.2, standard cheats will not work until the +debug cheat is used. This also enables the display of how much memory is available for OOP programs, in bytes. In the upper-right corner, it will show the letter &#039;m&#039; followed by this value.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v3.2. Other versions of the game that can be found are v3.1, v3.0, and v2.0. Aside from improvements in input handling and visual appearance, cheat availability and copyright messages, there are no observable differences between these versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 89,792 (89,792)&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| 47,473 (95,440)&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| 47,471 (95,616)&lt;br /&gt;
|-&lt;br /&gt;
| 3.2&lt;br /&gt;
| 47,764 (96,080)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[HI Format (ZZT)|HI Format]] - High scores.&lt;br /&gt;
* [[ZZT Format|SAV Format]] - Saved games, 100% identical to world files except a byte in the header.&lt;br /&gt;
* [[ZZT Format]] - World format.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6920</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6920"/>
		<updated>2016-07-27T15:55:16Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* ZZT world header */ Clean up unused values.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Savegame = Yes&lt;br /&gt;
 | Where = ?&lt;br /&gt;
 | Elements = Ammo, gems, keys, scores, many others&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|ZZT}}&lt;br /&gt;
   {{Game|Super ZZT}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the game engine and will be converted to empty padding. [[ZZTAE]] is an editor that uses this space to store extra information such as the author and genre.&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
Unused values are preserved. Data not listed here is overwritten with zeroes when saving worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|265||0x109||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
Unused values are preserved. Data not listed here is overwritten with zeroes when saving worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|-&lt;br /&gt;
|391||0x187||[[UINT8]][11]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6919</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6919"/>
		<updated>2016-07-27T15:53:35Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Super ZZT world header */ Clean up unused values.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Savegame = Yes&lt;br /&gt;
 | Where = ?&lt;br /&gt;
 | Elements = Ammo, gems, keys, scores, many others&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|ZZT}}&lt;br /&gt;
   {{Game|Super ZZT}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the game engine and will be converted to empty padding. [[ZZTAE]] is an editor that uses this space to store extra information such as the author and genre.&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
Only bytes through 279 (hex 0x117) are copied into memory. The rest of the bytes before board data are discarded upon saving.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This value is preserved but not used by the game engine.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
Unused values are preserved. Data not listed here is overwritten with zeroes when saving worlds.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|-&lt;br /&gt;
|391||0x187||[[UINT8]][11]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6918</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6918"/>
		<updated>2016-07-27T15:49:29Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* ZZT world header */ Clarification on unused values.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Savegame = Yes&lt;br /&gt;
 | Where = ?&lt;br /&gt;
 | Elements = Ammo, gems, keys, scores, many others&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|ZZT}}&lt;br /&gt;
   {{Game|Super ZZT}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the game engine and will be converted to empty padding. [[ZZTAE]] is an editor that uses this space to store extra information such as the author and genre.&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
Only bytes through 279 (hex 0x117) are copied into memory. The rest of the bytes before board data are discarded upon saving.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This value is preserved but not used by the game engine.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
Only bytes through 402 (hex 0x192) are copied into memory. The rest of the bytes before board data are discarded upon saving.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6917</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6917"/>
		<updated>2016-07-27T15:47:17Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* ZZT world header */ Add header preservation information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Savegame = Yes&lt;br /&gt;
 | Where = ?&lt;br /&gt;
 | Elements = Ammo, gems, keys, scores, many others&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|ZZT}}&lt;br /&gt;
   {{Game|Super ZZT}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the game engine and will be converted to empty padding. [[ZZTAE]] is an editor that uses this space to store extra information such as the author and genre.&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
Only bytes through 279 (hex 0x117) are copied into memory. The rest of the bytes before board data are discarded upon saving.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
Only bytes through 402 (hex 0x192) are copied into memory. The rest of the bytes before board data are discarded upon saving.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6916</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6916"/>
		<updated>2016-07-27T15:44:31Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Super ZZT world header */ Add more information about preserved bytes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Savegame = Yes&lt;br /&gt;
 | Where = ?&lt;br /&gt;
 | Elements = Ammo, gems, keys, scores, many others&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|ZZT}}&lt;br /&gt;
   {{Game|Super ZZT}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the game engine and will be converted to empty padding. [[ZZTAE]] is an editor that uses this space to store extra information such as the author and genre.&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
Only bytes through 402 (hex 0x192) are copied into memory. The rest of the bytes before board data are discarded upon saving.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6915</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6915"/>
		<updated>2016-07-27T15:37:09Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Super ZZT world header */ Discovery about 0x182&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Savegame = Yes&lt;br /&gt;
 | Where = ?&lt;br /&gt;
 | Elements = Ammo, gems, keys, scores, many others&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|ZZT}}&lt;br /&gt;
   {{Game|Super ZZT}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the game engine and will be converted to empty padding. [[ZZTAE]] is an editor that uses this space to store extra information such as the author and genre.&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6914</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6914"/>
		<updated>2016-07-27T15:36:24Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* ZZT world header */ Discovery about 0x106&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Savegame = Yes&lt;br /&gt;
 | Where = ?&lt;br /&gt;
 | Elements = Ammo, gems, keys, scores, many others&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|ZZT}}&lt;br /&gt;
   {{Game|Super ZZT}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the game engine and will be converted to empty padding. [[ZZTAE]] is an editor that uses this space to store extra information such as the author and genre.&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassedTicks&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This contains information about sub-seconds on time limited boards.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=6913</id>
		<title>Super ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=6913"/>
		<updated>2016-07-26T17:29:26Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Game info */ More info about Super ZZT&amp;#039;s origins&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
Super ZZT is an object-oriented game scripting engine created by Tim Sweeney. It is based on the same code as [[ZZT]], with a number of notable improvements and changes. There were 3 worlds released with the commercial version of the game: PROVING, FOREST, and MONSTER. The shareware version of Super ZZT came with just MONSTER.&lt;br /&gt;
&lt;br /&gt;
== Editor ==&lt;br /&gt;
&lt;br /&gt;
While Super ZZT features a world editor, it was considered too buggy for release and was hidden from users. However, the ZZT community was eventually able to locate the command line switch to enable the use of the built-in editor. It can be enabled from the command line using &amp;quot;SUPERZ /E&amp;quot; to start the game, and then opened by pressing &amp;quot;E&amp;quot; at the title screen.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v2.0. The only other known version is v1.1. There are no observable differences between the two versions of the game aside from the opening and closing screens.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| 53,924 (108,288)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 54,076 (109,072)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[SZT Format]] - World format.&lt;br /&gt;
* [[Super ZZT Graphics Format|Graphics Format]] - Format of the ANSI art on the title screen and the exit screen.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:Game Intro Page]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Crunched_Screen_Image&amp;diff=6912</id>
		<title>Crunched Screen Image</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Crunched_Screen_Image&amp;diff=6912"/>
		<updated>2016-07-26T17:27:32Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A special format is used internally by [[Super ZZT]] to draw the title screen and ending screen graphics. The format assumes a 80x25 display window.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
There is no header information for this format. It is read as a stream of bytes until the Y-position goes off the bottom (row 25).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value!!Description&lt;br /&gt;
|-&lt;br /&gt;
|00-0F||Set the foreground color of following output to this value.&lt;br /&gt;
|-&lt;br /&gt;
|10-17||Set the background color of following output to the lower 4 bits of this value.&lt;br /&gt;
|-&lt;br /&gt;
|18||Go to the beginning of the following text line.&lt;br /&gt;
|-&lt;br /&gt;
|19||Read one more byte &#039;&#039;n&#039;&#039;, and output a space character &#039;&#039;n&#039;&#039;+1 times.&lt;br /&gt;
|-&lt;br /&gt;
|1A||Read two more bytes &#039;&#039;n&#039;&#039; and &#039;&#039;char&#039;&#039;, and output &#039;&#039;char&#039;&#039; for &#039;&#039;n&#039;&#039;+1 times.&lt;br /&gt;
|-&lt;br /&gt;
|1B-1F||Undefined?&lt;br /&gt;
|-&lt;br /&gt;
|20-FF||Output this character exactly.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
These graphics cannot be found or used outside the game executable. They are referenced directly by the code and compiled into the game engine itself.&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Crunched_Screen_Image&amp;diff=6911</id>
		<title>Crunched Screen Image</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Crunched_Screen_Image&amp;diff=6911"/>
		<updated>2016-07-26T17:26:34Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Created page with &amp;quot;A special format is used internally by Super ZZT to draw the title screen and ending screen graphics. The format assumes a 80x25 display window.  == Format ==  There is no hea...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A special format is used internally by Super ZZT to draw the title screen and ending screen graphics. The format assumes a 80x25 display window.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
There is no header information for this format. It is read as a stream of bytes until the Y-position goes off the bottom (row 25).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value!!Description&lt;br /&gt;
|-&lt;br /&gt;
|00-0F||Set the foreground color of following output to this value.&lt;br /&gt;
|-&lt;br /&gt;
|10-17||Set the background color of following output to the lower 4 bits of this value.&lt;br /&gt;
|-&lt;br /&gt;
|18||Go to the beginning of the following text line.&lt;br /&gt;
|-&lt;br /&gt;
|19||Read one more byte &#039;&#039;n&#039;&#039;, and output a space character &#039;&#039;n&#039;&#039;+1 times.&lt;br /&gt;
|-&lt;br /&gt;
|1A||Read two more bytes &#039;&#039;n&#039;&#039; and &#039;&#039;char&#039;&#039;, and output &#039;&#039;char&#039;&#039; for &#039;&#039;n&#039;&#039;+1 times.&lt;br /&gt;
|-&lt;br /&gt;
|1B-1F||Undefined?&lt;br /&gt;
|-&lt;br /&gt;
|20-FF||Output this character exactly.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
These graphics cannot be found or used outside the game executable. They are referenced directly by the code and compiled into the game engine itself.&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=6910</id>
		<title>Super ZZT</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Super_ZZT&amp;diff=6910"/>
		<updated>2016-07-26T17:13:45Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Game info ==&lt;br /&gt;
&lt;br /&gt;
Super ZZT is an object-oriented game scripting engine created by Tim Sweeney. There were 3 worlds released with the commercial version of the game: PROVING, FOREST, and MONSTER. The shareware version of Super ZZT came with just MONSTER.&lt;br /&gt;
&lt;br /&gt;
== Editor ==&lt;br /&gt;
&lt;br /&gt;
While Super ZZT features a world editor, it was considered too buggy for release and was hidden from users. However, the ZZT community was eventually able to locate the command line switch to enable the use of the built-in editor. It can be enabled from the command line using &amp;quot;SUPERZ /E&amp;quot; to start the game, and then opened by pressing &amp;quot;E&amp;quot; at the title screen.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
The latest version of the game is v2.0. The only other known version is v1.1. There are no observable differences between the two versions of the game aside from the opening and closing screens.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! File Size (decompressed)&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| 53,924 (108,288)&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| 54,076 (109,072)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
* [[ZZT Format#Board Format|BRD Format]] - Board format. This is stored exactly the same as in a world, but it&#039;s just one board.&lt;br /&gt;
* [[SZT Format]] - World format.&lt;br /&gt;
* [[Super ZZT Graphics Format|Graphics Format]] - Format of the ANSI art on the title screen and the exit screen.&lt;br /&gt;
&lt;br /&gt;
[[Category:Epic Megagames]]&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:Game Intro Page]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6906</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6906"/>
		<updated>2016-07-18T18:05:09Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* ZZT board header */ Clarify board length bytes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Savegame = Yes&lt;br /&gt;
 | Where = ?&lt;br /&gt;
 | Elements = Ammo, gems, keys, scores, many others&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|ZZT}}&lt;br /&gt;
   {{Game|Super ZZT}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the game engine and will be converted to empty padding. [[ZZTAE]] is an editor that uses this space to store extra information such as the author and genre.&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes (excluding the two bytes from this value). Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6782</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6782"/>
		<updated>2016-02-29T18:48:43Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* World Format */ Add details about the world info padding.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Savegame = Yes&lt;br /&gt;
 | Where = ?&lt;br /&gt;
 | Elements = Ammo, gems, keys, scores, many others&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|ZZT}}&lt;br /&gt;
   {{Game|Super ZZT}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
There are some unused bytes after the world information that are ignored by the game. While it is safe to put any data whatsoever into this unused space, it is not saved back to disk by the game engine and will be converted to empty padding. [[ZZTAE]] is an editor that uses this space to store extra information such as the author and genre.&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6225</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6225"/>
		<updated>2015-09-09T02:22:36Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: More homogenized credits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Information ==&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse engineered by [[User:SaxxonPike|SaxxonPike]], Kev Vance, WiL and David Hammond. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=User:SaxxonPike&amp;diff=6224</id>
		<title>User:SaxxonPike</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=User:SaxxonPike&amp;diff=6224"/>
		<updated>2015-09-08T03:56:36Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Add personal contact info.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m SaxxonPike. I like to decipher game formats and write programs that modify game files. My ongoing interest in deciphering Bemani game formats has led me to discover a lot of tricks as well as techniques to more quickly discover formats and encryption schemes.&lt;br /&gt;
&lt;br /&gt;
My recent interests that pertain to this Wiki are ZZT, Jill of the Jungle, Kiloblaster, and Xargon.&lt;br /&gt;
&lt;br /&gt;
== Did I miss something? ==&lt;br /&gt;
&lt;br /&gt;
Contact me.&lt;br /&gt;
&lt;br /&gt;
E-mail: [mailto:saxxonpike@gmail.com saxxonpike@gmail.com]&lt;br /&gt;
&lt;br /&gt;
Twitter [https://twitter.com/saxxonfox @SaxxonFox]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6223</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6223"/>
		<updated>2015-09-08T03:54:35Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Call out for further info.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Credits ==&lt;br /&gt;
&lt;br /&gt;
A large portion of this information was gathered from documents written by Kev Vance (original ZZT format documentation), David Hammond (Mystical Winds Encyclopedia), and WiL (SuperZZT format documentation). A few errors have been corrected and the information has been tested in an attempt to create the most comprehensive document of both the ZZT and Super ZZT formats. This format document is primarily maintained and tested by [[User:SaxxonPike|SaxxonPike]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If there&#039;s anything missing, please let SaxxonPike know, either via e-mail or Twitter.&#039;&#039;&#039; You may find these accounts on their [[User:SaxxonPike|user page]].&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6222</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6222"/>
		<updated>2015-09-08T03:09:08Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Element properties */ Clarification on addresses.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Credits ==&lt;br /&gt;
&lt;br /&gt;
A large portion of this information was gathered from documents written by Kev Vance (original ZZT format documentation), David Hammond (Mystical Winds Encyclopedia), and WiL (SuperZZT format documentation). A few errors have been corrected and the information has been tested in an attempt to create the most comprehensive document of both the ZZT and Super ZZT formats. This format document is primarily maintained and tested by [[User:SaxxonPike|SaxxonPike]].&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element. &#039;&#039;&#039;Note:&#039;&#039;&#039; The addresses shown are not really significant- you should only consider which ones share the same code to cut down on how many element behaviors to consider.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6221</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6221"/>
		<updated>2015-09-08T03:03:42Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Element Lists */ Table describing the different properties&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Credits ==&lt;br /&gt;
&lt;br /&gt;
A large portion of this information was gathered from documents written by Kev Vance (original ZZT format documentation), David Hammond (Mystical Winds Encyclopedia), and WiL (SuperZZT format documentation). A few errors have been corrected and the information has been tested in an attempt to create the most comprehensive document of both the ZZT and Super ZZT formats. This format document is primarily maintained and tested by [[User:SaxxonPike|SaxxonPike]].&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using any elements outside this range produce undefined behavior which is dependent on whatever was residing in memory at the time the game was loaded. Most often, it will crash.&lt;br /&gt;
&lt;br /&gt;
=== Element properties ===&lt;br /&gt;
&lt;br /&gt;
These are all possible internal properties for each element.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Property!!Description&lt;br /&gt;
|-&lt;br /&gt;
|Id||Id number of the element&lt;br /&gt;
|-&lt;br /&gt;
|Hex||Hexidecimal representation of the Id number&lt;br /&gt;
|-&lt;br /&gt;
|Name||Known name of the element, which may not be present internally&lt;br /&gt;
|-&lt;br /&gt;
|Character||ASCII character for the default draw code, which may be ignored if special draw code is enabled&lt;br /&gt;
|-&lt;br /&gt;
|Color||Default color. If the color is 0xFE, then new tiles will be created with the primary color as the background and a white foreground. If the color is &amp;gt;= 0xF0, any primary color is allowed, but in the editor you can&#039;t choose the color unless the default color is 0xFF&lt;br /&gt;
|-&lt;br /&gt;
|Destructible||Element can be destroyed by bullets and by being crushed by puzzle pieces&lt;br /&gt;
|-&lt;br /&gt;
|Pushable||Element can be pushed. The NS/EW sliders are a special case in the code, so they will not be marked with this flag&lt;br /&gt;
|-&lt;br /&gt;
|Editor Floor||When using the editor, actors such as enemies can be placed on top of elements marked with this flag. Has no effect during gameplay.&lt;br /&gt;
|-&lt;br /&gt;
|Floor||Elements with this flag can freely be moved upon by actors&lt;br /&gt;
|-&lt;br /&gt;
|Shown||ZZT only. Elements marked with this flag will always be shown, even on dark boards&lt;br /&gt;
|-&lt;br /&gt;
|Special Draw||If this flag is set, the default draw code is bypassed with different draw code&lt;br /&gt;
|-&lt;br /&gt;
|Draw Code||Offset of the routine that performs the drawing, if Special Draw is set&lt;br /&gt;
|-&lt;br /&gt;
|Cycle||Default cycle. If this is -1, the element is not generated as an actor. Creatures will have cycles above zero&lt;br /&gt;
|-&lt;br /&gt;
|Act Code||Offset of the routine that performs standard behavior. For example: creature movement, bomb countdown&lt;br /&gt;
|-&lt;br /&gt;
|Interact Code||Offset of the routine that handles when a player touches the element. For example: item pickups, entering a passage&lt;br /&gt;
|-&lt;br /&gt;
|Menu#||Number of the editor menu where this element can be found&lt;br /&gt;
|-&lt;br /&gt;
|Key||Key press which is mapped to this element in the editor&lt;br /&gt;
|-&lt;br /&gt;
|Internal Name||Name of the element used in the editor. It is also used by OOP- the parser will remove all symbols and spaces and compare that&lt;br /&gt;
|-&lt;br /&gt;
|Category||When it comes time to display this element in the editor, if present, the category will be drawn in yellow first.&lt;br /&gt;
|-&lt;br /&gt;
|Edit P1||Text to show when editing the P1 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P2||Text to show when editing the P2 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit P3||Text to show when editing the P3 of an actor that uses this element&lt;br /&gt;
|-&lt;br /&gt;
|Edit Board||Text to show when selecting the target board&lt;br /&gt;
|-&lt;br /&gt;
|Edit Step||Text to show when selecting the target direction&lt;br /&gt;
|-&lt;br /&gt;
|Edit Code||Text to show when editing an actor&#039;s code (scroll or object OOP)&lt;br /&gt;
|-&lt;br /&gt;
|Points||When an actor using this element is killed by the player, it&#039;s worth this much score&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6220</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6220"/>
		<updated>2015-09-08T02:40:37Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* Super ZZT elements */ Add properties from binary.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Credits ==&lt;br /&gt;
&lt;br /&gt;
A large portion of this information was gathered from documents written by Kev Vance (original ZZT format documentation), David Hammond (Mystical Winds Encyclopedia), and WiL (SuperZZT format documentation). A few errors have been corrected and the information has been tested in an attempt to create the most comprehensive document of both the ZZT and Super ZZT formats. This format document is primarily maintained and tested by [[User:SaxxonPike|SaxxonPike]].&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using the undefined values between defined ones will generally not cause a crash; however, these values don&#039;t have any notable behavior. They are a simple wall element with no name, and therefore cannot be referenced by ZZT-OOP.&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3FA5||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x02||0x1F||||Yes||||||||0x0020||1||0x4B76||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||||0x0020||1||0x4596||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||0x0020||-1||0x0000||0x37E7||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||0x0020||-1||0x0000||0x397D||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x36F2||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||0x0020||-1||0x0000||0x3A63||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||0x0020||1||0x3517||0x3603||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||||0x0020||0||0x0000||0x39ED||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||Yes||0x2E32||2||0x3177||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||Yes||0x1DBD||6||0x1E25||0x1F3F||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||0x0020||-1||0x0000||0x2581||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||Yes||0x1C67||3||0x1CB7||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||Yes||0x1D12||2||0x1D62||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava||0x6F||0x4E||||||Yes||||||0x0020||-1||0x0000||0x4155||3||L||Lava||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||0x0020||-1||0x0000||0x3EAF||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||0x0020||-1||0x0000||0x3B5A||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3B5A||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x3F6C||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x3E23||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||Yes||0x285B||1||0x2872||0x0010||3||X||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||Yes||0x2216||2||0x21D6||0x2192||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||Yes||0x17C3||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0xEB||0x02||Yes||Yes||||||||0x0020||3||0x09C1||0x014C||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||0x0020||1||0x07C3||0x014C||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||Yes||0x30FD||3||0x2EC2||0x312F||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||0x0020||3||0x25E8||0x27CF||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||Yes||0x1663||2||0x1811||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||Yes||0x3B8E||4||0x3C01||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||0x0020||2||0x016A||0x014C||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||0x0020||2||0x0284||0x014C||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||0x0020||2||0x0B31||0x014C||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||0x0020||2||0x1375||0x014C||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor||0xB0||Any (0xFF)||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||F||Floor||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water N||0x1E||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||8||Water N||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water S||0x1F||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||2||Water S||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water W||0x11||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||4||Water W||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water E||0x10||0x19||||||Yes||Yes||||0x0020||-1||0x0000||0x0010||5||6||Water E||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|54||0x36||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|55||0x37||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|56||0x38||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|57||0x39||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|58||0x3A||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton||0x94||0x0D||Yes||Yes||||||||0x0020||1||0x03A8||0x014C||4||R||Roton||Uglies:||Intelligence?||Switch Rate?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup||0xED||0x04||Yes||Yes||||||Yes||0x05A3||2||0x0563||0x014C||4||D||Dragon Pup||||Intelligence?||Switch Rate?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer||0xE5||0x01||Yes||Yes||||||||0x0020||2||0x05E6||0x014C||4||P||Pairer||||Intelligence?||||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider||0x0F||Any (0xFF)||Yes||||||||||0x0020||1||0x06EB||0x014C||4||S||Spider||||Intelligence?||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web||0xC5||Any (0xFF)||||||Yes||Yes||Yes||0x17EA||-1||0x0000||0x0010||5||W||Web||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone||0x5A||0x0F||||||||||Yes||0x38A1||1||0x38C3||0x385E||5||Z||Stone||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|65||0x41||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|66||0x42||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|67||0x43||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|68||0x44||||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet||0xF8||0x0F||Yes||||||||||0x0020||1||0x13ED||0x014C||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star||0x53||0x0F||||||||||Yes||0x22AE||1||0x233A||0x014C||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text (Blue)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text (Green)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text (Cyan)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text (Red)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text (Purple)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text (Brown)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text (Black)||0x20||Any (0xFF)||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6219</id>
		<title>ZZT Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=ZZT_Format&amp;diff=6219"/>
		<updated>2015-09-08T02:34:21Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: /* ZZT elements */ Add raw properties from binary.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Credits ==&lt;br /&gt;
&lt;br /&gt;
A large portion of this information was gathered from documents written by Kev Vance (original ZZT format documentation), David Hammond (Mystical Winds Encyclopedia), and WiL (SuperZZT format documentation). A few errors have been corrected and the information has been tested in an attempt to create the most comprehensive document of both the ZZT and Super ZZT formats. This format document is primarily maintained and tested by [[User:SaxxonPike|SaxxonPike]].&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
&lt;br /&gt;
A world file (.ZZT, .SZT) contains information about a game world, status of the player, and all its boards. Saved games (.SAV) are the same format as world files with a different extension and a different setting for the Lock byte.&lt;br /&gt;
&lt;br /&gt;
While there are built-in editors for these games, they do not provide full editing functionality.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
ZZT and Super ZZT have limits imposed either by the game itself or by the data types used to store information about the world&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Limitation!!ZZT!!Super ZZT&lt;br /&gt;
|-&lt;br /&gt;
|Board count (including title screen)||101||33&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in bytes)||32767||32767&lt;br /&gt;
|-&lt;br /&gt;
|Board size (in tiles)||60x25||96x80&lt;br /&gt;
|-&lt;br /&gt;
|Status Elements per board (including Player)||151||129&lt;br /&gt;
|-&lt;br /&gt;
|Flag strings||10||16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Realistically, the original ZZT can only support boards up to around 20k due to the code itself. ZZT 4.0 by WiL, a hack of the original game executable, can support the full 32k.&lt;br /&gt;
&lt;br /&gt;
== World Format ==&lt;br /&gt;
&lt;br /&gt;
There are two formats for a world file. One is for ZZT and the other is for SuperZZT. The formats are very similar. All 8-bit (byte) values are unsigned. All 16-bit (short) values are signed. Boolean values (such as a player&#039;s keys) are represented with 0 for false and 1 for true; any other values may cause inconsistent behavior.&lt;br /&gt;
&lt;br /&gt;
World Name is used by the game to determine which file to load after the player quits and restarts the game. Therefore if a world contains a world name that is actually the filename of another world, after the player quits and restarts the game, the world with the matching filename will be loaded!&lt;br /&gt;
&lt;br /&gt;
=== Common world information ===&lt;br /&gt;
&lt;br /&gt;
The storage of this information is the same between the two formats. After this part of the file, the format will differ slightly.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;WorldType&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Used to identify the world&#039;s format. ZZT uses -1 (FF FF) and SuperZZT uses -2 (FE FF).&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;NumBoards&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of boards in the world, not including the title screen. Increment by 1 for the real number of stored boards. A value of 0 means only the title screen exists.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerAmmo&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s ammunition.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerGems&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s gems.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][7]||&amp;lt;i&amp;gt;PlayerKeys&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s keys. A nonzero value means the player has the specified key. The keys are in this order: Blue, Green, Cyan, Red, Purple, Yellow, White.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerHealth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s health.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerBoard&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;In a world file, this will be the starting board for the player (the title screen, board 0, is always shown first). In a saved game, this will be the board that the player is currently on.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .ZZT file. After this information, storage of the boards starts at byte offset 512 (hex 0x200).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerTorches&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s torches.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;TorchCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for a torch to remain lit.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|29||0x01D||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|30||0x01E||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|50||0x032||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|51||0x033||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|71||0x047||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|72||0x048||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|92||0x05C||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|93||0x05D||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|113||0x071||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|114||0x072||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|134||0x086||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|135||0x087||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|155||0x09B||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|156||0x09C||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|176||0x0B0||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|177||0x0B1||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|197||0x0C5||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|198||0x0C6||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|218||0x0DA||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|219||0x0DB||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|239||0x0EF||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|240||0x0F0||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|260||0x104||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|262||0x106||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|264||0x108||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT world header ===&lt;br /&gt;
&lt;br /&gt;
This is the second half of the header specific to a .SZT file. After this information, storage of the boards starts at byte offset 1024 (hex 0x400).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|19||0x013||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerScore&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s score.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Always 0.&lt;br /&gt;
|-&lt;br /&gt;
|25||0x019||[[INT16LE]]||&amp;lt;i&amp;gt;EnergyCycles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Game cycles left for an energizer to be effective.&lt;br /&gt;
|-&lt;br /&gt;
|27||0x01B||[[UINT8]]||&amp;lt;i&amp;gt;WorldNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[char]][20]||&amp;lt;i&amp;gt;WorldName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Internal name of the world.&lt;br /&gt;
|-&lt;br /&gt;
|48||0x030||[[UINT8]]||&amp;lt;i&amp;gt;Flag0Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|49||0x031||[[char]][20]||&amp;lt;i&amp;gt;Flag0&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 0.&lt;br /&gt;
|-&lt;br /&gt;
|69||0x045||[[UINT8]]||&amp;lt;i&amp;gt;Flag1Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[char]][20]||&amp;lt;i&amp;gt;Flag1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 1.&lt;br /&gt;
|-&lt;br /&gt;
|90||0x05A||[[UINT8]]||&amp;lt;i&amp;gt;Flag2Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|91||0x05B||[[char]][20]||&amp;lt;i&amp;gt;Flag2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 2.&lt;br /&gt;
|-&lt;br /&gt;
|111||0x06F||[[UINT8]]||&amp;lt;i&amp;gt;Flag3Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|112||0x070||[[char]][20]||&amp;lt;i&amp;gt;Flag3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 3.&lt;br /&gt;
|-&lt;br /&gt;
|132||0x084||[[UINT8]]||&amp;lt;i&amp;gt;Flag4Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|133||0x085||[[char]][20]||&amp;lt;i&amp;gt;Flag4&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 4.&lt;br /&gt;
|-&lt;br /&gt;
|153||0x099||[[UINT8]]||&amp;lt;i&amp;gt;Flag5Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|154||0x09A||[[char]][20]||&amp;lt;i&amp;gt;Flag5&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 5.&lt;br /&gt;
|-&lt;br /&gt;
|174||0x0AE||[[UINT8]]||&amp;lt;i&amp;gt;Flag6Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|175||0x0AF||[[char]][20]||&amp;lt;i&amp;gt;Flag6&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 6.&lt;br /&gt;
|-&lt;br /&gt;
|195||0x0C3||[[UINT8]]||&amp;lt;i&amp;gt;Flag7Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|196||0x0C4||[[char]][20]||&amp;lt;i&amp;gt;Flag7&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 7.&lt;br /&gt;
|-&lt;br /&gt;
|216||0x0D8||[[UINT8]]||&amp;lt;i&amp;gt;Flag8Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|217||0x0D9||[[char]][20]||&amp;lt;i&amp;gt;Flag8&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 8.&lt;br /&gt;
|-&lt;br /&gt;
|237||0x0ED||[[UINT8]]||&amp;lt;i&amp;gt;Flag9Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|238||0x0EE||[[char]][20]||&amp;lt;i&amp;gt;Flag9&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 9.&lt;br /&gt;
|-&lt;br /&gt;
|258||0x102||[[UINT8]]||&amp;lt;i&amp;gt;Flag10Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|259||0x103||[[char]][20]||&amp;lt;i&amp;gt;Flag10&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 10.&lt;br /&gt;
|-&lt;br /&gt;
|279||0x117||[[UINT8]]||&amp;lt;i&amp;gt;Flag11Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|280||0x118||[[char]][20]||&amp;lt;i&amp;gt;Flag11&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 11.&lt;br /&gt;
|-&lt;br /&gt;
|300||0x12C||[[UINT8]]||&amp;lt;i&amp;gt;Flag12Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|301||0x12D||[[char]][20]||&amp;lt;i&amp;gt;Flag12&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 12.&lt;br /&gt;
|-&lt;br /&gt;
|321||0x141||[[UINT8]]||&amp;lt;i&amp;gt;Flag13Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|322||0x142||[[char]][20]||&amp;lt;i&amp;gt;Flag13&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 13.&lt;br /&gt;
|-&lt;br /&gt;
|342||0x156||[[UINT8]]||&amp;lt;i&amp;gt;Flag14Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|343||0x157||[[char]][20]||&amp;lt;i&amp;gt;Flag14&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 14.&lt;br /&gt;
|-&lt;br /&gt;
|363||0x16B||[[UINT8]]||&amp;lt;i&amp;gt;Flag15Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|364||0x16C||[[char]][20]||&amp;lt;i&amp;gt;Flag15&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Name of Flag 15.&lt;br /&gt;
|-&lt;br /&gt;
|384||0x180||[[INT16LE]]||&amp;lt;i&amp;gt;TimePassed&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Amount of time in seconds that has passed on the current board. Only applicable if the board the player is on has a time limit.&lt;br /&gt;
|-&lt;br /&gt;
|386||0x182||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerData&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;This stores a runtime memory location that points to the status element currently being used by the player. Its value is not used when loading worlds, and is always set to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|388||0x184||[[UINT8]]||&amp;lt;i&amp;gt;Locked&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;A nonzero value indicates the world is actually a saved game. Additionally, worlds with a nonzero Locked byte can&#039;t be edited using the built-in editor.&lt;br /&gt;
|-&lt;br /&gt;
|389||0x185||[[INT16LE]]||&amp;lt;i&amp;gt;PlayerStones&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Player&#039;s stones of power. If this value is negative, no information is shown in-game about them. If this value is &amp;gt;= 0, it uses a flag to describe this value in the status bar of the game. The flag used is the first one found that is preceded with a Z. &amp;quot;The Lost Forest&amp;quot; contains a flag called &amp;quot;ZSTONES&amp;quot; which shows as &amp;quot;STONES&amp;quot; on the status bar, for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board Format ==&lt;br /&gt;
&lt;br /&gt;
Boards can be stored individually in .BRD files. Since ZZT and Super ZZT use the same extension for boards and there is no world information stored with them, it isn&#039;t immediately apparent whether the board is a ZZT or a Super ZZT board. Testing the validity of the board information with both world types should be a good way to determine the type of world a board belongs to.&lt;br /&gt;
&lt;br /&gt;
=== Format layout ===&lt;br /&gt;
&lt;br /&gt;
Boards consist of 4 parts: Board Header, RLE Tiles, Board Properties, and Status Element Properties. Status Elements are elements on the board that the game actively processes - these include the player, enemies, any animating blocks, and Scrolls and Objects which can contain ZZT-OOP code.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
ZZT boards are 60x25 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][50]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|53||0x035||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board header ===&lt;br /&gt;
&lt;br /&gt;
Super ZZT boards are 96x80 tiles.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[INT16LE]]||&amp;lt;i&amp;gt;BoardSize&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Size of the board, in bytes. Even if the board was corrupted by the built-in editor (which happens sometimes) this value will be correct; the rest of the boards remain intact and in place.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;BoardNameLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[char]][60]||&amp;lt;i&amp;gt;BoardName&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
|63||0x03F||[[#Run-length encoded tile data|ZZT_RLE]]||&amp;lt;i&amp;gt;Tiles&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Start of the RLE tile data.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run-length encoded tile data ===&lt;br /&gt;
&lt;br /&gt;
Tile data is represented as sets of 3 bytes. These sets are repeated until the board is completely filled. For ZZT, this will be 60*25=&amp;lt;b&amp;gt;1500&amp;lt;/b&amp;gt; tiles. For SuperZZT, this will be 96*80=&amp;lt;b&amp;gt;7680&amp;lt;/b&amp;gt; tiles. The tiles are unpacked from left to right, top to bottom. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Count&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Element&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|[[UINT8]]||&amp;lt;i&amp;gt;Color&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tiles.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A small quirk of this RLE format is when the number of tiles is set to zero. Due to the way the decoder is set up, a Count of 0 means there are actually 256 tiles encoded. The built-in editor does not encode tiles using this value despite being decoded correctly in the game, and it will probably crash some older external editors.&lt;br /&gt;
&lt;br /&gt;
=== ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;IsDark&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the board is covered in darkness which can only be revealed by using a torch.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;MessageLength&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Length of the on-screen message.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[char]][58]||&amp;lt;i&amp;gt;Message&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;On-screen message. This is used internally and is not loaded by the game.&lt;br /&gt;
|-&lt;br /&gt;
|66||0x042||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|67||0x043||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|68||0x044||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|70||0x046||[[UINT8]][16]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|86||0x056||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT board properties ===&lt;br /&gt;
&lt;br /&gt;
This information follows directly after the tile RLE data.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;MaxPlayerShots&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Maximum number of player-owned projectiles allowed at once.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;ExitNorth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the North side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[UINT8]]||&amp;lt;i&amp;gt;ExitSouth&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the South side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|3||0x003||[[UINT8]]||&amp;lt;i&amp;gt;ExitWest&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the West side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[UINT8]]||&amp;lt;i&amp;gt;ExitEast&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Board # that is traveled to when moving off the East side of the board.&lt;br /&gt;
|-&lt;br /&gt;
|5||0x005||[[UINT8]]||&amp;lt;i&amp;gt;RestartOnZap&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;When set to 1, the player will teleport to the location where they entered the board whenever they are hurt.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|7||0x007||[[UINT8]]||&amp;lt;i&amp;gt;PlayerEnterY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the tile where the player entered the board.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[INT16LE]]||&amp;lt;i&amp;gt;CameraX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[INT16LE]]||&amp;lt;i&amp;gt;CameraY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate of the viewport. This value is not used when loading worlds.&lt;br /&gt;
|-&lt;br /&gt;
|12||0x00C||[[INT16LE]]||&amp;lt;i&amp;gt;TimeLimit&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Time limit of the board, in seconds. The player is hurt when time runs out.&lt;br /&gt;
|-&lt;br /&gt;
|14||0x00E||[[UINT8]][14]||&amp;lt;i&amp;gt;(unused)&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|28||0x01C||[[INT16LE]]||&amp;lt;i&amp;gt;StatElementCount&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Number of Status Elements on the board, not including the player. Increment by 1 to get the real stored number of status elements.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Status Elements ===&lt;br /&gt;
&lt;br /&gt;
This follows directly after board properties. It is repeated for each Status Element. The first element stored is always the player-controlled element. This element may contain strange values for Step, Leader and Follower information - this is because these values are used internally by the game.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x000||[[UINT8]]||&amp;lt;i&amp;gt;LocationX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-coordinate. Location coordinates are 1-based, unlike any other coordinates in the file.&lt;br /&gt;
|-&lt;br /&gt;
|1||0x001||[[UINT8]]||&amp;lt;i&amp;gt;LocationY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
|2||0x002||[[INT16LE]]||&amp;lt;i&amp;gt;StepX&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;X-step value. This pair of values represents a vector that typically points in one of the four cardinal directions. Its use differs for each type of element.&lt;br /&gt;
|-&lt;br /&gt;
|4||0x004||[[INT16LE]]||&amp;lt;i&amp;gt;StepY&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Y-step value.&lt;br /&gt;
|-&lt;br /&gt;
|6||0x006||[[INT16LE]]||&amp;lt;i&amp;gt;Cycle&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Cycle. This represents the frequency, in ticks, at which the game will process this status element.&lt;br /&gt;
|-&lt;br /&gt;
|8||0x008||[[UINT8]]||&amp;lt;i&amp;gt;P1&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 1. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|9||0x009||[[UINT8]]||&amp;lt;i&amp;gt;P2&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 2. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|10||0x00A||[[UINT8]]||&amp;lt;i&amp;gt;P3&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Parameter 3. Its use will differ depending on the type of element.&lt;br /&gt;
|-&lt;br /&gt;
|11||0x00B||[[INT16LE]]||&amp;lt;i&amp;gt;Follower&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Follower status element. Its value determines if another status element is linked behind this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|13||0x00D||[[INT16LE]]||&amp;lt;i&amp;gt;Leader&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Leader status element. Its value determines if another status element is linked in front of this one. Typically used for linking centipedes.&lt;br /&gt;
|-&lt;br /&gt;
|15||0x00F||[[UINT8]]||&amp;lt;i&amp;gt;UnderID&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Element of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|16||0x010||[[UINT8]]||&amp;lt;i&amp;gt;UnderColor&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Color of the tile under this status element.&lt;br /&gt;
|-&lt;br /&gt;
|17||0x011||[[INT32LE]]||&amp;lt;i&amp;gt;Pointer&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;Stores the location in memory of the code that this status element is using. Status elements typically point to their own code until they #BIND the code of another - in which case this memory location value is replaced with the new one. ZZT does not use this value when loading worlds, and always sets it to 0 when saving worlds.&lt;br /&gt;
|-&lt;br /&gt;
|21||0x015||[[INT16LE]]||&amp;lt;i&amp;gt;CurrentInstruction&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;The offset in bytes of the code block to execute ZZT-OOP from. Only Objects and Scrolls can execute ZZT-OOP.&lt;br /&gt;
|-&lt;br /&gt;
|23||0x017||[[INT16LE]]||&amp;lt;i&amp;gt;Length&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;There are two uses for this value: If this value is positive, it represents the number of bytes that are in the code block. If this value is negative, the absolute value of this value represents the Status Element number to copy code from. This saves space by removing redundant code duplication. Since code is shared in this way, all modifications to code will affect any other Status Elements using it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ZZT (not Super ZZT), 8 bytes of padding will follow.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Length&amp;quot; is positive, the code will be stored here.&lt;br /&gt;
&lt;br /&gt;
== Element Lists ==&lt;br /&gt;
&lt;br /&gt;
This is a list of all valid built-in elements that can be used. Using the undefined values between defined ones will generally not cause a crash; however, these values don&#039;t have any notable behavior. They are a simple wall element with no name, and therefore cannot be referenced by ZZT-OOP.&lt;br /&gt;
&lt;br /&gt;
=== ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Id!!Hex!!Name!!Character!!Color!!Destructible!!Pushable!!Editor Floor!!Floor!!Shown!!Special Draw!!Draw Code!!Cycle!!Act Code!!Interact Code!!Menu#!!Key!!Internal Name!!Category!!Edit P1!!Edit P2!!Edit P3!!Edit Board!!Edit Step!!Edit Code!!Points&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty||0x20||0x70||||Yes||||Yes||||||0x0020||-1||0x0000||0x0010||0||||Empty||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3973||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0039||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor||0x20||0x07||||||||||||||0x0020||1||0x4481||0x0010||0||||Monitor||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player||0x02||0x1F||Yes||Yes||||||Yes||||0x0020||1||0x3E2F||0x0010||1||Z||Player||Items:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo||0x84||0x03||||Yes||||||||||0x0020||-1||0x0000||0x3289||1||A||Ammo||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||Torch||0x9D||0x06||||||||||Yes||||0x0020||-1||0x0000||0x37B6||1||T||Torch||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem||0x04||Any (0xFF)||Yes||Yes||||||||||0x0020||-1||0x0000||0x3306||1||G||Gem||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key||0x0C||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x3169||1||K||Key||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door||0x0A||Any BG (0xFE)||||||||||||||0x0020||-1||0x0000||0x33DA||1||D||Door||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll||0xE8||0x0F||||Yes||||||||||0x0020||1||0x2F9F||0x308B||1||S||Scroll||||||||||||||Edit text of scroll||0&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage||0xF0||Any BG (0xFE)||||||||||Yes||||0x0020||0||0x0000||0x3372||1||P||Passage||||||||||Room thru passage?||||||0&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator||0xFA||0x0F||||||||||||Yes||0x2A15||2||0x2BFF||0x0010||1||U||Duplicator||||||Duplication rate?;SF||||||Source direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb||0x0B||Any (0xFF)||||Yes||||||||Yes||0x1872||6||0x18DA||0x19F3||1||B||Bomb||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer||0x7F||0x05||||||||||||||0x0020||-1||0x0000||0x2034||1||E||Energizer||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|15||0x0F||Star||0x53||0x0F||||||||||||Yes||0x1D5D||1||0x1DE9||0x00F5||0||||Star||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Clockwise||0x2F||Any (0xFF)||||||||||||Yes||0x171C||3||0x176C||0x0010||1||1||Clockwise||Conveyors:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Counter||0x5C||Any (0xFF)||||||||||||Yes||0x17C7||2||0x1817||0x0010||1||2||Counter||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|18||0x12||Bullet||0xF8||0x0F||Yes||||||||||||0x0020||1||0x0F65||0x00F5||0||||Bullet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Water||0xB0||0xF9||||||Yes||||||||0x0020||-1||0x0000||0x3B03||3||W||Water||Terrains:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest||0xB0||0x20||||||||||||||0x0020||-1||0x0000||0x38D0||3||F||Forest||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid||0xDB||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||S||Solid||Walls:||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal||0xB2||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||N||Normal||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable||0xB1||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||3||B||Breakable||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder||0xFE||Any (0xFF)||||Yes||||||||||0x0020||-1||0x0000||0x34E3||3||O||Boulder||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider (NS)||0x12||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||1||Slider (NS)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider (EW)||0x1D||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x34E3||3||2||Slider (EW)||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake||0xB2||Any (0xFF)||||||Yes||Yes||||||0x0020||-1||0x0000||0x3949||3||A||Fake||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible||0xB0||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x3848||3||I||Invisible||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink wall||0xCE||Any (0xFF)||||||||||||Yes||0x242E||1||0x2445||0x0010||3||L||Blink wall||||Starting time||Period||||||Wall direction||||0&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter||0xC5||Any (0xFF)||||||||||||Yes||0x1CC5||2||0x1C85||0x1C41||3||T||Transporter||||||||||||Direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line||0xCE||Any (0xFF)||||||||||||Yes||0x122A||-1||0x0000||0x0010||0||||Line||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet||0x2A||0x0A||||||||||||||0x0020||-1||0x0000||0x0010||3||R||Ricochet||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|33||0x21||Blink Ray (Horizontal)||0xCD||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear||0x99||0x06||Yes||Yes||||||||||0x0020||3||0x054F||0x00F5||2||B||Bear||Creatures:||Sensitivity?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian||0x05||0x0D||Yes||Yes||||||||||0x0020||1||0x0351||0x00F5||2||R||Ruffian||||Intelligence?||Resting time?||||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object||0x02||Any (0xFF)||||||||||||Yes||0x2B85||3||0x2AA5||0x2BB7||2||O||Object||||Character?||||||||||Edit Program||0&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime||0x2A||Any (0xFF)||||||||||||||0x0020||3||0x20AE||0x2295||2||V||Slime||||||Movement speed?;FS||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark||0x5E||0x07||||||||||||||0x0020||3||0x2321||0x0010||2||Y||Shark||||Intelligence?||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning gun||0x18||Any (0xFF)||||||||||||Yes||0x11D0||2||0x12A7||0x0010||2||G||Spinning gun||||Intelligence?||Firing rate?||Firing type?||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher||0x10||Any (0xFF)||||||||||||Yes||0x3517||4||0x358A||0x0010||2||P||Pusher||||||||||||Push direction?||||0&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion||0xEA||0x0C||Yes||Yes||||||||||0x0020||2||0x0113||0x00F5||2||L||Lion||Beasts:||Intelligence?||||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger||0xE3||0x0B||Yes||Yes||||||||||0x0020||2||0x022D||0x00F5||2||T||Tiger||||Intelligence?||Firing rate?||Firing type?||||||||2&lt;br /&gt;
|-&lt;br /&gt;
|43||0x2B||Blink Ray (Vertical)||0xBA||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Head||0xE9||Any (0xFF)||Yes||||||||||||0x0020||2||0x06BF||0x00F5||2||H||Head||Centipedes||Intelligence?||Deviance?||||||||||1&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Segment||0x4F||Any (0xFF)||Yes||||||||||||0x0020||2||0x0EED||0x00F5||2||S||Segment||||||||||||||||3&lt;br /&gt;
|-&lt;br /&gt;
|46||0x2E||||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Text (Blue)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Text (Green)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Text (Cyan)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Text (Red)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Text (Purple)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|52||0x34||Text (Brown)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|53||0x35||Text (Black)||0x20||Any (0xFF)||||||||||||||0x0020||-1||0x0000||0x0010||0||||||||||||||||||||0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Super ZZT elements ===&lt;br /&gt;
&lt;br /&gt;
Internal properties for each of these elements can be found in the [http://pastebin.com/mdEwu6Y1 Super ZZT Elements Pastebin].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value!!Hex!!Element&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||Empty&lt;br /&gt;
|-&lt;br /&gt;
|1||0x01||Board Edge&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||Messenger&lt;br /&gt;
|-&lt;br /&gt;
|3||0x03||Monitor&lt;br /&gt;
|-&lt;br /&gt;
|4||0x04||Player&lt;br /&gt;
|-&lt;br /&gt;
|5||0x05||Ammo&lt;br /&gt;
|-&lt;br /&gt;
|7||0x07||Gem&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||Key&lt;br /&gt;
|-&lt;br /&gt;
|9||0x09||Door&lt;br /&gt;
|-&lt;br /&gt;
|10||0x0A||Scroll&lt;br /&gt;
|-&lt;br /&gt;
|11||0x0B||Passage&lt;br /&gt;
|-&lt;br /&gt;
|12||0x0C||Duplicator&lt;br /&gt;
|-&lt;br /&gt;
|13||0x0D||Bomb&lt;br /&gt;
|-&lt;br /&gt;
|14||0x0E||Energizer&lt;br /&gt;
|-&lt;br /&gt;
|16||0x10||Conveyor, Clockwise&lt;br /&gt;
|-&lt;br /&gt;
|17||0x11||Conveyor, Counterclockwise&lt;br /&gt;
|-&lt;br /&gt;
|19||0x13||Lava&lt;br /&gt;
|-&lt;br /&gt;
|20||0x14||Forest&lt;br /&gt;
|-&lt;br /&gt;
|21||0x15||Solid Wall&lt;br /&gt;
|-&lt;br /&gt;
|22||0x16||Normal Wall&lt;br /&gt;
|-&lt;br /&gt;
|23||0x17||Breakable Wall&lt;br /&gt;
|-&lt;br /&gt;
|24||0x18||Boulder&lt;br /&gt;
|-&lt;br /&gt;
|25||0x19||Slider, North-South&lt;br /&gt;
|-&lt;br /&gt;
|26||0x1A||Slider, East-West&lt;br /&gt;
|-&lt;br /&gt;
|27||0x1B||Fake Wall&lt;br /&gt;
|-&lt;br /&gt;
|28||0x1C||Invisible Wall&lt;br /&gt;
|-&lt;br /&gt;
|29||0x1D||Blink Wall&lt;br /&gt;
|-&lt;br /&gt;
|30||0x1E||Transporter&lt;br /&gt;
|-&lt;br /&gt;
|31||0x1F||Line&lt;br /&gt;
|-&lt;br /&gt;
|32||0x20||Ricochet&lt;br /&gt;
|-&lt;br /&gt;
|34||0x22||Bear&lt;br /&gt;
|-&lt;br /&gt;
|35||0x23||Ruffian&lt;br /&gt;
|-&lt;br /&gt;
|36||0x24||Object&lt;br /&gt;
|-&lt;br /&gt;
|37||0x25||Slime&lt;br /&gt;
|-&lt;br /&gt;
|38||0x26||Shark&lt;br /&gt;
|-&lt;br /&gt;
|39||0x27||Spinning Gun&lt;br /&gt;
|-&lt;br /&gt;
|40||0x28||Pusher&lt;br /&gt;
|-&lt;br /&gt;
|41||0x29||Lion&lt;br /&gt;
|-&lt;br /&gt;
|42||0x2A||Tiger&lt;br /&gt;
|-&lt;br /&gt;
|44||0x2C||Centipede Head&lt;br /&gt;
|-&lt;br /&gt;
|45||0x2D||Centipede Segment&lt;br /&gt;
|-&lt;br /&gt;
|47||0x2F||Floor&lt;br /&gt;
|-&lt;br /&gt;
|48||0x30||Water, North&lt;br /&gt;
|-&lt;br /&gt;
|49||0x31||Water, South&lt;br /&gt;
|-&lt;br /&gt;
|50||0x32||Water, West&lt;br /&gt;
|-&lt;br /&gt;
|51||0x33||Water, East&lt;br /&gt;
|-&lt;br /&gt;
|59||0x3B||Roton&lt;br /&gt;
|-&lt;br /&gt;
|60||0x3C||Dragon Pup&lt;br /&gt;
|-&lt;br /&gt;
|61||0x3D||Pairer&lt;br /&gt;
|-&lt;br /&gt;
|62||0x3E||Spider&lt;br /&gt;
|-&lt;br /&gt;
|63||0x3F||Web&lt;br /&gt;
|-&lt;br /&gt;
|64||0x40||Stone of Power&lt;br /&gt;
|-&lt;br /&gt;
|69||0x45||Bullet&lt;br /&gt;
|-&lt;br /&gt;
|70||0x46||Blink Ray, Horizontal&lt;br /&gt;
|-&lt;br /&gt;
|71||0x47||Blink Ray, Vertical&lt;br /&gt;
|-&lt;br /&gt;
|72||0x48||Star&lt;br /&gt;
|-&lt;br /&gt;
|73||0x49||Text, Blue&lt;br /&gt;
|-&lt;br /&gt;
|74||0x4A||Text, Green&lt;br /&gt;
|-&lt;br /&gt;
|75||0x4B||Text, Cyan&lt;br /&gt;
|-&lt;br /&gt;
|76||0x4C||Text, Red&lt;br /&gt;
|-&lt;br /&gt;
|77||0x4D||Text, Purple&lt;br /&gt;
|-&lt;br /&gt;
|78||0x4E||Text, Brown&lt;br /&gt;
|-&lt;br /&gt;
|79||0x4F||Text, White&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ZZT]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=LBX_Format&amp;diff=6218</id>
		<title>LBX Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=LBX_Format&amp;diff=6218"/>
		<updated>2015-09-08T01:18:22Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: Filename info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;LBX&#039;&#039;&#039; is a container format used by [[Master of Orion]], [[Master of Magic]] and [[Master of Orion 2]].  The format may contain multiple files, typically uncompressed.  It does not store file names, nor any reliable indication of what the contained files are for (the game is expected to know their purpose internally.)  Therefore, while it is not overly difficult to pack or unpack an LBX archive, modding the game requires further knowledge of what each individual .LBX is supposed to contain.&lt;br /&gt;
&lt;br /&gt;
Certain .LBX files in [[Master of Orion 2]] are not actually .LBX archives, but rather renamed video files.&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
The header of the format is as follows:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||[[UINT16LE]]||Number of files in archive&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||[[BYTE]][4]||Signature (AD FE 00 00)&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||[[UINT16LE]]||Information about the contents&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||[[UINT32LE]]||Offset to file (repeats for each file stored in the LBX)&lt;br /&gt;
|-&lt;br /&gt;
|(last offset)||||[[UINT32LE]]||Offset to end of LBX&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is not unusual for there to be some rubbish data in between the header/index and the packaged data.&lt;br /&gt;
&lt;br /&gt;
=== File names ===&lt;br /&gt;
&lt;br /&gt;
Filenames may or may not follow. If they do exist, you will find them at offset 512 (0x200 hex) and they will last until the first file starts:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||[[BYTE]][32]||File name&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=LBX_Format&amp;diff=6217</id>
		<title>LBX Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=LBX_Format&amp;diff=6217"/>
		<updated>2015-09-08T01:13:24Z</updated>

		<summary type="html">&lt;p&gt;SaxxonPike: File offsets, filled in a little info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;LBX&#039;&#039;&#039; is a container format used by [[Master of Orion]], [[Master of Magic]] and [[Master of Orion 2]].  The format may contain multiple files, typically uncompressed.  It does not store file names, nor any reliable indication of what the contained files are for (the game is expected to know their purpose internally.)  Therefore, while it is not overly difficult to pack or unpack an LBX archive, modding the game requires further knowledge of what each individual .LBX is supposed to contain.&lt;br /&gt;
&lt;br /&gt;
Certain .LBX files in [[Master of Orion 2]] are not actually .LBX archives, but rather renamed video files.&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
The header of the format is as follows:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset!!Hex!!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||0x00||[[UINT16LE]]||Number of files in archive&lt;br /&gt;
|-&lt;br /&gt;
|2||0x02||[[BYTE]][4]||Signature (AD FE 00 00)&lt;br /&gt;
|-&lt;br /&gt;
|6||0x06||[[UINT16LE]]||Information about the contents&lt;br /&gt;
|-&lt;br /&gt;
|8||0x08||[[UINT32LE]]||Offset to file (repeats for each file stored in the LBX)&lt;br /&gt;
|-&lt;br /&gt;
|(last offset)||||[[UINT32LE]]||Offset to end of LBX&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is not unusual for there to be some rubbish data in between the header/index and the packaged data.&lt;/div&gt;</summary>
		<author><name>SaxxonPike</name></author>
	</entry>
</feed>