Month: June 2017

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 created 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 in Retro, Sinclair, Spectrum, ZX Spectrum Next, 0 comments

Nodes of Yesod for ZX Spectrum Next – developer blog episode 0!

ZX Spectrum Next

As has been noted on the ZX Spectrum Next site, I am creating a version of Nodes Of Yesod for the ZX Spectrum Next!

Nodes Of Yesod was announced as a stretch goal for the very successful Kickstarter campaign for the ZX Spectrum Next, and will be made available to all backers of the ZX Spectrum Next (the Kickstarter blasted through all the stretch goals!).

More updates as they come, I’ll get the first developer blog entry online as soon as possible, check back soon!

Posted by Steve Wetherill in Retro, Spectrum, ZX Spectrum Next, 3 comments