It’s working. And I’ve found some old code that I can adapt from an earlier version of the project to help speed along development of the console.
Month: February 2015
Font finalized
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
Test print failed
It seems my laser printer can’t handle card of a similar thickness to the U4 Player Reference Card. Will try again today with a lighter weight. I wonder if an inkjet printer would do any better.
Old news
I just realized that there’s no link to the 3D dungeon demo video on the site.
Fixed.
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: http://www.simonsingh.net/The_Black_Chamber/hintsandtips.html
Oh, and I wrote a Perl script to automate the conversion from plain text.
Keyboard decoding
The keyboard reading code is done. It can distinguish between letters, numbers and control codes. Who needs lower case anyway? It comes in at 133 bytes.
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:
Multi
U3.5 uses the following class names:
Warrior—Fighter
Wizard—Mage
Priest—Cleric
Rogue—Thief
Warrior-Priest—Paladin
Warrior-Rogue—Barbarian
Warrior-Wizard—Bard
Priest-Rogue—Illusionist
Priest-Wizard—Druid
Wizard-Rogue—Alchemist
Multi—Ranger