Box contents


Current plans for the box contents include:

  • Multi-session CD-ROM
  • Printed manual
  • Player reference card
  • Trinket

The CD-ROM will contain the music from the game (original and enhanced), the game in audio format (for recording to cassette), emulator packages for Linux, Mac and Windows, and most of the game assets in portable formats. I’d like to add a cassette tape as well, but that will depend on duplication costs.

Stretch goal



No, I’m not doing a Kickstarter. But I am thinking about what I want to do after I finish U3.5 and I’m thinking about porting the game mechanics to something a bit more modern than the Z80. Like for instance a certain portable gaming platform, iOS, Android, and Windows.

Digraph compression

Given that the target platform for U3.5 is severely memory constrained I figured it would make sense to use some kind of compression on the text. But given that I already use about 2/3rds of the CPU power just to update the attribute area of the screen, decompression needs to be really fast. So I opted for digraph compression. The character set is 7-bit ASCII (there are a couple of control characters to switch the offset for the Runic and Elvish characters). When bit 7 is set that indicates the character is encoding a pair of letters. There are 16 possibilities for the first character and 8 for the second. The available characters are based on the frequency with which characters appear in English. I had tried to be clever and with the second set use the second characters from the most common digraphs. But it turns out it’s more efficient to just use the most common characters. On the plus side that cuts the size of the lookup table by 8 bytes. More info on letter frequency and digraphs here:

Oh, and I wrote a Perl script to automate the conversion from plain text.

ZXodus][Engine details

U3.5 is being written using the ZXodus][Engine. Here are some of its features:

  • 9×9 tile multi-color (8×1 pixel attributes) viewport.
  • 16 column text window (6×8 pixel font).
  • 256 multi-color (16×16 pixel) 2D tiles.
  • 256 multi-color (16×16 pixel) 3D dungeon tiles.
  • 128×128 tile world map.
  • 32×32 tile mini-map viewer.
  • 16 town maps of 32×32 tiles each.
  • 4 three-dimensional dungeons with eight levels of 8×8 each.
  • 9×9 encounter maps.
  • 16 NPCs per town.
  • 11 character classes.
  • two spell systems.
  • melee and ranged combat.
  • Ultıma 4 style dialog system.
  • three channel music player.
  • one channel sound effects.

Here are a couple of questions from the FAQ that aren’t covered elsewhere on this site:

How do NPCs work?

There are 16 NPCs per town. Each town has a table of NPC start positions. Each NPC has a dialog tree. You can script other behaviour such as giving and taking objects. Shops are handled separately.

How do melee and ranged combat work?

All combat takes place in the top-down 2D view. Ranged and magic attacks can thus target enemies within the 9×9 viewport.

What is multi-color?

Normally the ZX Spectrum can manage only two colors per cell (8×8 pixels). Multi-color is a software technique that increases the available colors to two colors per bitmap byte (8×1 pixels) by rapidly updating the attribute frame buffer as the screen is drawn. It is not possible to do this across the entire screen so the effect is limited to the viewport.

Is compression supported?

Infrequently accessed data is compressed using LZ77 or LZSS. Text compression is handled on a per-language basis using digraph compression.

What is the software license?

The ZXodus][Engine is commercial, closed-source software. Licensing is based on a 5% royalty on gross revenues. Which is to say, if you give your game away, it won’t cost you anything to use ZXodus. If you charge for your game, it will cost you 5% of the price you charge per copy sold. There are no up-front costs, but you will have to submit a game proposal.

Character classes


There are four major character classes:

  • Warrior
  • Wizard
  • Priest
  • Rogue

If you think of these as the corners of a four-side die, then you can work out the six dual-class variants following the edges of the die:

  • Warrior-Priest
  • Warrior-Rogue
  • Warrior-Wizard
  • Priest-Rogue
  • Priest-Wizard
  • Wizard-Rogue

At the center of the die is the all rounder:


U3.5 uses the following class names: