ZX Spectrum Next

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

As promised in the previous episode, in this (brief) update I'll delve into the tool selection process and talk a little about the setup I'm using for Spectrum Next development. First of all, I unashamedly admit that I am a Mac user. Nothing against Windows, or other OS choices, it's just something that I have gravitated to over the years, via iPhone development in the first instance, but also through working in the SF Bay Area tech bubble for the past several years. While there are a lot of great Mac development tools available, it seems that most (not all!) Spectrum development tools are for other operating systems, Windows primarily. I'm not a big fan of running virtualization software such as Parallels, Fusion or Virtual Box as these (in my experience) tend to be resource hogs (though I do use Virtual Box now and then, and it does have the attractive property of being free - that is to say Open Source Software). For the most part these days, in order to run a particular piece of Windows software on Mac, I've been using CrossOver, which is basically a bundled version of Wine for Mac and Linux (note that while Wine itself is open source, CrossOver is not). From the Wine site

Wine (originally an acronym for "Wine Is Not an Emulator") is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, macOS, & BSD. Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop.

In my experience, CrossOver works pretty well for most development tools, including the paint package ProMotion, and the Windows based Spectrum/Z80 assembler/emulator/debugger Zeus.

I really like Zeus, and the fact that it is a self-contained IDE for Spectrum development; however, even though Zeus has implemented a few of the extended hardware functions of the Spectrum Next (as of this writing, version 3.66 supports the Next hardware sprites), it is not the most up to date Next development environment. In a way, this makes sense, because many of the Next features are still "settling" in terms of final specs. Still, as I am committed to completing an updated version of Nodes of Yesod for the Next launch, I need something a little more current.

So, if not Zeus, what else? Well in terms of emulators there is ZEsarUX (which I can never pronounce, or remember how to spell - sorry Cesar!) which has some Next support and which'll run native on Mac. What I need though is an assembler, and the best one I have found so far is in the CSpect package, which as of this writing is at version 0.5. CSpect is a Windows based emulator/debugger that comes with an assembler, SNasm, which is tailored to the Next, and which is truly on the bleeding edge for feature parity with (and in some cases ahead of!) the Next. Importantly for me, this combination runs quite nicely in CrossOver on the Mac.

That's it for this update. In the next update I'll talk more about setting CSpect up to run with CrossOver and the Sublime Text editor on the Mac, along with the z80asm Sublime plugin.

Posted by Steve Wetherill in Retro, Sinclair, Spectrum, Z80, ZX Spectrum Next, 6 comments

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

Nodes of Yesod: 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