Development

The Map Scrolls

That is to say I’ve written the code to grab the current 32×32 area of the 128×128 world map that the player is standing in and display a 9×9 area of that as the viewport. This means wherever the player is, it will be possible to display a 32×32 area map. And the map loops nicely at the edges. Now where did I put that bag of gems of peering?

RedBox SDK updated

Had a go at getting part of the ZXodus][Engine to run as part of a script in ZX BASIC (the scripting language used by the engine). Against all expectations it worked first time. I’ve added the latest development version of ZX BASIC to the RedBox SDK. RedBox is a WINE wrapper for the set of tools that are used to create assets and compile binaries for the ZXodus][Engine. Currently it’s Mac only until I find a way to build a Linux version. WINE doesn’t run on Windows, so there you have to install the tools separately. I’m now working on the next version of the character generator. When that’s done I’ll be able to re-use a fair amount of the code on the script engine.

[Edit] Well Apple has changed the underlying OS again and broken RedBox. Development is now moving to Windows.

Another failed test print

Tried some thinner paper which is supposed to be suitable for laser. Well it’s only coated on one side and the other side won’t hold the toner. So it looks like I have two choices for the Player Reference Card: I can either buy an inkjet printer, or I can get the cards commercially printed. Given what a short run it’s going to be I think buying an inkjet might be cheaper.

Tools

Over on the links page I’ve highlighted some of the tools I’m using. However, when I started my original project to port Ultima IV to the Chloe 280SE, many of these tools didn’t exist. So I wrote my own, or adapted what I could find.

showscreen.cgi

Written in 1996, TrueFONT was my first foray into assembly language. Most of it was written in compiled BASIC, but I didn’t want to drop back to BASIC to handle loading and saving, so I wrote some code to do that directly. I still use it from time to time, but now I mostly use Klaus Jahn’s FZX font editor. FZX is a proportional font format for 8-bits that I came up with. Unlike most 8-bit font systems, it supports kerning. But it was overkill for the ZXodus][Engine.

showscreen-1.cgi

For Spectrum graphics I’ve been using The Artist 2 since I got it in the 1980s. However, I ended up hacking it to suit my needs and eventually released my patched version as The Artist 3.

showscreen.cgi

Before I wrote the tile engine, I needed some tiles, so I wrote a tile editor, again in compiled BASIC. It’s slow and clunky, and only runs on the Timex TC2048 (using hardware 8×1 attribute mode). But it does let you see the bitmap without the color, which you can’t currently do with ZX Paintbrush. The ColorTILE format that I created for ZXU4 has now been used in several other engines.

View window

printing

I’ve slightly modified the view window so that the text has at least a one pixel gap around it. I also had to change the moon and direction windows to make it easier to clear before printing to them. There is a small amount of attribute clash (or color bleed if you prefer) but I think it’s acceptable.

Window cleaning

As the text display is XORed with the background, I needed some code to clear the area the text is written to. This is now complete for the moon phase, wind direction, roster, status bar, and console windows. I’m not sure if I’ll want to put text in the view window so I’ve left that for now. Now I just need to integrate the y-position lookup for those windows and I will be able to print to any area of the screen. With a slight update to the character set I’ll also be able to do inverted text by overprinting a block character.