Feb 222014

Very interesting! ARM based Amiga running UAE and booting from 3.5″ floppy!


 Posted by at 5:09 pm
Feb 162014

Check out this interview posted on the World of Spectrum site about my time at Odin Computer Graphics. The interview was originally posted in Spanish on the elmundodelspectrum.com site in May 2012, but I’ve never linked it from here.

Screen Shot 2014-02-16 at 1.22.44 AM

 Posted by at 1:21 am
Feb 132014

Today saw the appearance of an article about the ZX Spectrum Bluetooth Keyboard in the Grauniad technology blog, courtesy of @alexhern.

While I have slight concerns over the title (the Kickstarter was not stalled, and in fact was successfully funded), the article contains an interesting angle on the issue of older games, and brings up the topic of “abandonware”.

When Alex pinged me for some quotes for his article, he asked me about abandonware, and my comments are contained in the article and excerpted here:

AH: While many gamers may think that software as old as that shipped by Elite Systems is somehow in the public domain, the truth is that games are covered by copyright in just the same way – and for just the same time – as other creative works.

“Older games are sometimes treated as ‘abandonware’”, says Wetherill, “which is an invented term used to justify the copying of games.

“I think people sometimes have the sense of, ‘I bought that game in 1985, why should I pay for it again’, but in that respect I think games are not really much different to other media – you can’t play your old vinyl records on a CD player, you have to buy the CD. On the whole though, in this case most feedback seems sympathetic.”

Some have taken exception to my definition of abandonware, but my point really is that if official versions of older titles are available commercially (through an emulator, say), and if you lose your original copy or if you can’t use it any more (in this case, because the good old Sinclair Speccy is obsolete), then it seems reasonable to expect players to cough up a couple of bucks for the supported version.

 Posted by at 10:03 pm
Feb 112014

Since I’ve been covering various game music remixes here I thought I’d post these links to remixes of the Nodes of Yesod music. The original music was by Fred Gray,  these versions originate in the iOS version of the game (the 25th Anniversary Edition).

I’ve included a couple of tracks, firstly, the main “theme” music. This version was created by Julien Nevo in MIDI format, to which I added instrumentation and production for this PCM version:

And then the in game “Moon Music” by Matti Paalanen:

 Posted by at 11:27 pm
Feb 102014

A couple of years ago I became interested in methods of automatically “up-scaling” retro video game art for the high resolution screens that are everywhere these days, without generating a blurry mess. I came across the “HQX” algorithm, which is a pixel art scaling algorithm developed by Martin Stepin, and which is used in various places, including several emulators (such as NestopiaFCEUX and more). There are three hqx algorithms, corresponding to 2x, 3x and 4x scaling respectively. Code for the algorithm can be found here.

This weekend I was playing around with art from my ZX Spectrum game Crosswize, and I thought I’d share some of the results obtained by applying hq4x. The original art for the game was in typical ZX Spectrum “2 color with 8×8 pixel attributes” mode (though nicely done by Colin Grunes). What I’ve done here is first added some color shading into the low resolution art by hand and then applied the hq4x algorithm (the final result is unretouched, bar some cropping for inclusion here).

First example:

Original ZX Speccy image

Color shading added

HQ4X 4x scaled result

And another example:

Screen Shot 2014-02-09 at 8.57.36 PM

Original ZX Speccy image

Screen Shot 2014-02-09 at 8.57.43 PM

Color shading applied

Screen Shot 2014-02-09 at 9.16.52 PM

Resultant HQ4X image

I think the results are pretty remarkable! The resultant images remove any pixel stepping contained in the original low resolution image, and I think have a “retro” charm of their own. What may not be obvious here is that the original art is really tiny compared to the result – the original art is shown magnified using pixel quadrupling so you can compare the images. Also note that the “original” images are not quite the same as the colored and scaled ones due to simple laziness on my part – I just grabbed a similar part of the image because it was more convenient to do so.

Here’s an image at the original scale:


Image from ZX Speccy @ original scale

 Posted by at 1:17 am
Feb 092014

Here’s a presentation given by “Bernie Dugggs” (Doug Burns) to a group @ an Oracle Users Group (I think ) a couple of years ago. Doug touches on some of the lessons learned early in his career while programming the ZX Speccy, and how those lessons are still useful today.


 Posted by at 11:31 pm
Feb 092014

The other day, I came across source code for Crosswize, a ZX Spectrum game I wrote back in the 80’s. Crosswize was written in Z80 assembly (of course), and featured a smooth-scrolling background, accomplished through a goodly amount of self-modifying code, along with the discovery that the fastest way to read and write to memory on the Z80 is to use the stack (if you can free up enough register pairs that is). The reason the stack is so fast is because the “push” instruction is encoded in only a single byte which specifies the 16 bit register pair to push (the source), and which naturally decrements the stack pointer before writing to memory when executed. Similarly, loading register pairs (using “pop”) from the stack is also fast, and that approach is also used here.

In the following code snippet (which is responsible for drawing 8 pixel rows of the smooth scrolling background), by the time the code gets to the label “push_00”, the register pairs AF, BC, DE, IY and IY have been loaded with pre-shifted bitmap data, and the register pair HL cleared. In a previous setup routine, the block of .db 0 starting @ label push_00 has been pre-populated with (using self-modifying code) a series of “push” instructions. The stack pointer (sp) is set to the byte just after the right edge of a screen pixel row. When the Z80 CPU executes the code following push_00, 16 bit values (corresponding to 16 pixels on the ZX Spectrum) are written to the screen from right to left (a push instruction first decrements the stack pointer and then writes the 16 bit value to the new location).

I had a struggle to find enough registers (as may be evident from the code), so ended up using push ix and push iy opcodes (which have an extra 0xdd or 0xfd byte prefix), so the “jp 0” at the label skip_00 is self-modified to jump into the correct spot in the buffer to allow for all combinations of 1 and 2 byte opcodes.

This code is rife with self-modifying code, a technique that is mostly obsolete today, but which was a handy tool for many Z80 coders back in the day.

 Posted by at 12:50 am
Feb 012014

UPDATE Sunday February 2nd, 2014: I’ve edited the excerpted Jan 30 statement from Steve Wilcox out of the paragraph below – Google the Elite website if you want to read the statement. Elite does seem to have removed essentially all of their emulated Spectrum apps from the iOS App Store (at least), for the moment. I don’t anticipate making further public statements on the issue here until it is resolved.

Further to my post two days ago regarding Elite’s (funded) Kickstarter for a Bluetooth keyboard for their Spectrum emulator apps, Elite has pulled their “ZX Spectrum: Elite Collection” iOS apps from the iTunes App Store.

At this time, Elite still has Odin games on the iOS App Store, including Robin of the Wood, Nodes of Yesod, Heartland and Arc of Yesod (in various forms).

 Posted by at 6:47 pm
Jan 302014

Today I added my voice to that of the other software developers who have posted on the Kickstarter comments page for the “Bluetooth Spectrum”, a Kickstarter campaign by Elite for a bluetooth keyboard add-on for Elite’s iOS/Android Spectrum emulator. The gist of it is that Elite is not paying license fees due for the “officially licensed” software which is the basis of both their emulator and the Kickstarter keyboard project.

The comments section of the Kickstarter project can be found here.

See this World of Spectrum forum post for more background.

For convenience, my comments are reproduced here:

After watching this Kickstarter campaign evolve, reading the public statements in this comment section from several Spectrum developers who maintain that they have not received payment for games licensed to Elite for the ZX Spectrum emulator (or indeed, that their games have been used without permission at all), and after private email communications from several of these developers (six individuals actually, developers of well known and loved Spectrum titles), I felt it time to make my own public statement.


1. Paul McKenna & myself entered into a licensing agreement with Elite in December 2010 for the Odin Computer Graphics titles. Paul is the owner of the Odin intellectual property and my business partner, and I was the lead programmer on many of Odin’s games, such as Nodes of Yesod, Robin of the Wood, Heartland and others. Steve Wilcox is our contact at Elite. The agreement covered 9 titles, Heartland, Hypaball, Nodes of Yesod, The Plot, Robin of the Wood, Sidewize, Arc of Yesod, I.C.U.P.S and Crosswize, which were to be included in Elite’s ZX Spectrum emulator product for iOS and other devices.

2. We received (initially voluntarily, but later upon my prompting) royalty statements from Elite showing sales of the Odin titles. Eventually these statements dried up completely.

3. Over time, it became clear that royalties due under the agreement (which were to be paid within 30 days of the end of each calendar quarter) were not being paid. It is now over three years since this agreement was signed and to date no royalties have been paid. This is despite numerous requests, several of which have been acknowleged (by way of an email response) by Steve Wilcox, the most recent exchange being in December 2013.

4. At the present time, Elite is still offering the licensed Odin content for sale in various forms on the iOS app store (for example, Robin of the Wood: ZX Spectrum, Robin of the Wood HD: ZX Spectrum, and the Odin Computer Graphics pack which is an in-app purchase for the ZX Spectrum Elite Collection emulator, and which features Nodes of Yesod, Robin of the Wood and others).

5. This Kickstarter campaign has raised over $100,000 (£65,000) on the back of “officially licensed” software; however, I understand that in the cases of at least 6 individual developers, as communicated both publicly here and through private correspondance with each individual, the fees due under those “official licenses” have in fact not been paid. In another case I understand there is in fact no agreement in place at all (see Steve Crow’s comment below). To put a finer point on this, if you don’t pay the license fees, you’re not an official licensee.

In summary:

So much for the facts. I would encourage all backers of this Kickstarter to consider the information I have provided carefully as they decide whether to support this Kickstarter. I’ve been working as a game developer continuously for the last 30 years, I’ve worked on many major software titles, have a good reputation in the industry and have no personal motivation to misrepresent this situation.


 Posted by at 10:15 pm
Jan 122014

Projectyle Box Art

I recently came across a review of Projectyle at the French site GrosPixels.com. The site is in French, here’s a link to an English version of the review courtesy of Google Translate. It’s an interesting take on the game, and mentions another game that shipped just after Projectyle called, “Adrenalynn” that I will need to go an check out since the screenshot looks so similar!



 Posted by at 4:15 pm