Nodes of Yesod: ZX Spectrum Next – developer blog episode 1

Welcome to episode one of the Nodes of Yesod: ZX Spectrum Next developer blog. In this first episode, I'll cover "the story so far", which is basically a summary of the various Nodes of Yesod related efforts I've made in recent years, most of which were really just experiments, but several of these experiments seem to dovetail into the current effort - creating a version of Nodes of Yesod for the Next!

OK, so where to begin. The original version of Nodes was created for the ZX Spectrum back in 1985 (with versions for the C64 and Amstrad CPC). The Speccy version was written in Z80 assembler, as was typical for the day. Since then, I've created various versions of the game (for example, iOS, tvOS, Flash), but those versions use modern languages such as C++, Objective C and ActionScript, none of which are suitable for creating an updated Spectrum Next version.

Nodes of Yesod for tvOS

Arc of Yesod Unity experiment

In addition to the versions which were published, I've worked here and there on other experiments. My previous thoughts were along the lines of creating an updated (beyond the level of updates seen in the published versions) version of the game, but I've never been able to figure out the venue for such an effort.

One theme that seems to recur for example, is the idea of a smooth scrolling version of Nodes. Certainly, this would have been quite difficult on the original Spectrum machines as scrolling the screen is usually something that consumes a ton of CPU power and memory, not a great match for the humble Speccy. Still, this is something that appeals to me. 

Here's a video showing an experiment using Unity to display a smooth scrolling "Yesod" game (in this case using Arc of Yesod graphics).

Interesting as this is, it does not really help with a Next version. Or does it? Well, it might. Not that Unity is available for the Next, but the Next does now offer hardware scrolling, and hardware sprites! Still, the Unity version is not using original game maps, and I think that would be a good baseline for a Next version.

One other experiment I did was to take the original Nodes of Yesod map, and tried to come up with a tracking camera system that might allow for smooth scrolling within the confines of the original maps. See the HTML5 video grabs here for an example of what I mean.

Original Z80 disassembly

So, perhaps we can make a smooth scrolling version of Nodes for the Next? How do we start with that?

As I noted, there are versions of Nodes for various machines, but none of these codebases are suitable for targeting the Next. Another effort that I've undertaken recently is to disassemble the code from the original game. Sadly, the Z80 source code for Nodes has long since perished. That said, I am probably 90% done disassembling the original source code using IDA.

The Z80 code then, is available. The Next also has a 28Mhz mode, so perhaps using the C language becomes feasible, in combination with elements of the original Z80 code.

Given these, a plan starts to present itself. Here's what I am thinking:

  • Take the original maps
  • Retain the same main character (Astro Charlie) controls, for jumping etc
  • Implement a smooth scrolling camera, using the rails system demonstrated above
  • Add help and map functionality similar to the iOS/tvOS versions

As far as a graphics style, a set of colorful graphics was developed for the other versions, and these could be made to run on the Next; however, I am more partial to a sort of "enhanced, color-clash-less" look. It'd be something like the mockup to the right, masked graphics with a clear outline and zero attribute clash. I would be interested to hear comments on this approach.


Nodes Next mockup

For the avoidance of doubt, development of the actual Next version of Nodes of Yesod has yet to commence. That won't happen in earnest until I get access to hardware; however, in the meantime, a couple of the emulators out there are starting to support some of the Next features (sprites, scrolling) and selection and configuration of tools, along with other preparation can proceed.

In the next episode, I'll cover tool selection and start to get into more nitty gritty aspects of development. If anyone reading this has suggestions or other input for how I might tailor future updates, I'd be glad to have your comments!

Posted by Steve Wetherill



+1 for the speccy graphics look minus colour clash 🙂

Interesting reading! And what does the name “Yesod” mean, and where did it come from?

Steve Wetherill

Where the name Yesod comes from is a mystery. 🙂 The artists who worked at Odin (Stuart, Paul & Colin) came up with the name.

Gabor Marinov

+1 for the original graphics – color clash. 🙂

Richard Halford

Good read. looking forward to.your choice of dev tools.
Im really liking Zeus but the editor isn’t too hot.
Will be really interested if you are going the C route to see how well it performs at 28mhz.

It would be interesting to have an option to choose the original speccy version, another without colour clash and an enhanced Next version with scrolling

Steve Wetherill

We’ll see. I guess the original game could be included in its entirety since storage is not at a premium on the Next. 🙂

Thanks for the update. Loved the original btw, one of my favourites on the C64 (yeah I know).

Regarding the graphics I would’ve hoped for something representative of the graphical power of the Next rather than a standard spectrum minus colour clash, although I do appreciate that this requires far more effort.

Steve Wetherill

Thanks. 🙂 I do have a complete set of multicolor art (see the iOS/tvOS/Flash versions). Depending on how I approach this, could possibly support both (like the iOS etc). We’ll see.

Very nice initiative of yours to share ideas and ask for feedback about the development of the new version of your game.

Surely, I would go for leveraging the Next’s new graphic modes and possibly targeting to showcase some of these new hardware capabilities, time and needed effort permitting.

I will soon try the TvOS version to see if new ideas arise

Keep up with the good work!

Who would’ve thought after all these years you’d pick up z80 assembler and Speccy gfx!
Robin of the Woods next? 😆

Steve Wetherill

You never know …

old speccy gfx + “ambient” background Layer 2 graphics /rocks, roots, bones/ .. something like SoTB would be nice.

Steve Wetherill

Trouble is, I’ll need layer 2 for the h/w scrolling. Which would point to Speccy style parallax background. Not quite enough sprites to draw the scrolling levels using sprites alone.

OK .. than what about timex hicolor background + ULA+ palette and DMA scroll /still talking about background gfx/.

Steve Wetherill

Yeah, the Next hardware keeps evolving doesn’t it? ULA+ is definitely a possibility for additional colors, that’s true. And DMA … yeah.

or simple two layers parallax scrolling .. background with minimal movement and dimmed color scheme.

+1 for the speccy graphics look minus colour clash. Smooth scrolling sounds cool too

+1 to classic look without colour clash

Very interesting read. Personally, I very much like the proposed look of Spectrum-style graphics without colour clash. (I’m not convinced that these graphics need the cartoonish black outline; merely getting rid of the colour-clash seems enough to me. But that’s a minor detail.) However, I also liked the graphics in the iOS version, and it’d be really neat to have the option to switch between the two styles on demand, even with just a keypress (though an explicit menu option would also be good).

NB Steve, would you please update the iOS version of Nodes for 64-bit compatibility? I don’t want to see it stop working soon when iOS 11 comes out…

Finally, back in the 80s I actually preferred Arc of Yesod to Nodes. (Can’t remember exactly why, except that I found it more playable, somehow. They were both great, but Arc was my favourite.) It’d obviously be nice if the work you do on this new version of Nodes could also lead to a rejuvenated Arc in due course…

Steve Wetherill

Thanks for the comments Richard. A couple of People have asked about 64 bit Nodes. Maybe it is time I ditched the current versions and port to Unity – get an Android version too! That’ll have to wait until the Next version is done though.

Well, it’d certainly be nice to see Nodes being revived on iOS/tvOS, however you choose to do it.

However – and I realise this is a naive question! – can’t you just recompile the current version for the 64-bit system and republish it to the App Store before iOS 11 gets released? Thing is, I envisage that a lot of people who currently have Nodes on their iOS devices will upgrade to iOS 11, be cheesed off when they realise that Nodes no longer works, delete it… and then never realise that a new, working version is available, once you release it (next year, or whenever it happens to be). Whereas, if you could keep it working (even via a clunky hack…), then you could provide a smoother upgrade path to a new version later and not lose your existing users.

So I’d consider it fairly critical for you to issue a 64-bit update in the next month or so (at most) – i.e. before iOS 11 gets released – in order to avoid a mass-deletion exercise and the loss of most of your existing user base.

Of course, that’s easy for me to say, having precisely no idea how much work is involved. I do observe that the current version of Nodes is sufficiently old that it still includes OpenFeint, which has now been non-functional for years, and thus needs to have that removed and ideally ought to be updated to support Game Centre instead. So there’s probably loads of hidden ‘gotchas’ that make it a lot more effort than a simple recompile.

But even so, given the impending Deadline of Doom(TM), I’d just think it’d work very much in your favour for your existing users NOT to experience your software becoming unusable, as they’d only delete it and probably never look back. I don’t want to divert you from the Next version, of course. I just think that – if it *were* feasible to do a ‘quickie’ 64-bit update of iOS Nodes before the iOS 11 release – you’ll both do yourself a big favour long-term (by not losing your existing iOS users) and create a lot of goodwill in that market. (There’s a LOT of much-loved older iOS games that are soon going to die and won’t get revived, and people seem to be reacting well to those developers who pop up and inject new life into apps that haven’t been updated for years, to keep them working under the new OS.)

Steve Wetherill

Yeah … the iOS version is old, the tvOS is much newer but has major differences to the iOS version. Maybe I can find time to take a look.

🙂 Thanks!

I must confess that I haven’t actually looked at the tvOS version, as my Apple TV only really gets used for watching things in the main. I just assumed it’d be the same as the iOS version. Will investigate over the weekend…

Steve Wetherill

It is quite different, actually. It runs @ 60fps rather than the original ~15fps by moving things fractional amounts. I figured that was the least I could do for folks with huge TV’s, though in the end it was a royal pain in the ass to make it work correctly. Cleaned up a lot of UI stuff too.

Excellent. I’ll definitely check it out – thanks.

Steve Wetherill

I opened the iOS version in XCode, aka Pandora’s Box. No promises yet though!

Steve Wetherill

OK, code running in iOS 10.3, need to install iOS 11 and try there.

Nodes iOS

Thanks very much for trying!

Steve Wetherill

iOS 11 Simulator. Running, but a bunch of warnings to evaluate. Open Feint to remove.

iOS 11

Looks promising!

+1 for the original Speccy look without colour clash. Great work by the way.

Steve, I did check out the tvOS version and liked it very much… except that I couldn’t figure out how to activate the mole (once I’d caught him). It *is* possible, is it? (I.e. I have only the little remote that came with the Apple TV; I do hope that an external game controller isn’t necessary as well.) Assuming one can activate and deactivate the mole with Apple’s own remote… how do you do it?! What do you press?

Steve Wetherill

Hi Richard – from memory I think an upward swipe gesture should do it (could be wrong, it has been a while since I played). Do the in game instructions not cover this, under the help menu?

Hi Steve. Thanks. I’ll have another look when I get chance. I did find that page of instructions, and I thought I’d read it – but I guess it’s possible I managed not to take in something critical! 😉 Will look again later. Anyway, nice job with it on the Apple TV. I like how you can choose an old-style or enhanced game – though (perhaps for the Next version) the ability to switch between the two graphics sets dynamically at any time would be even better. (I do like the new graphics, so it’d be great for them to be an option on the Next.)

Steve Wetherill

Terrible photo of TV follows …


Thanks, and apologies for the stupid question. Evidently I did manage to overlook that section of the instructions. The odd thing is that I did experiment with everything I could think of with the Apple TV remote, including swiping up, and I thought that all I’d managed to do with that was to make Charlie jump. Oh well, I’ll have another go in due course. As I say, sorry for the unnecessary question. I shouldn’t have to be told to RTFM.

Original Speccy look (minus colour clash) would be awesome.

Leave a Reply to Richard H. Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.