Stercore (Spectrum)

There’s another C64CD release drifting it’s way around the interwebs this evening. Stercore is a no-nonsense, scrolling shoot ’em up for the Sinclair ZX Spectrum with 48K or more RAM which was developed by yours truly a little while ago with the intention being to enter it into the venerable CSS Crap Game Competition because, well, it’s pretty darned crap! The code languished for a quite while after being mostly completed and was finally pushed out of the door and into the wild after a quick wash and brush up.

Everything should be moving at a constant 50 frames a second during play – my DivIDE is currently in need of either a major service or more likely replacing so I didn’t get a chance to try it on real hardware before release, but it doesn’t appear to be dropping frames under emulation – and the backgrounds whip past at a dizzying eight pixels a frame since it’s all built from attribute cells rather than graphics data. Because it would probably be impossible to play at this speed if there were background collisions there isn’t anything to smack into, but parts of the landscape scroll over both the player and their assailants so a close eye needs to be kept to make sure enemies aren’t not lurking behind something.

There’s even some beeper-powered “music” on the title page which was composed by a Python script called Autotracker and then forced kicking and screaming into Beepola. For the sake of maintaining the 1980s budget game aesthetic, the Wham! The Music Box style sound driver was selected when compiling the music rather than going for any of the more complicated routines available and there are also some appropriately beep-laden sound effects during play as well.

This is my first complete assembly language game for the Spectrum and yes, that’s very apparent even without delving through the source code at GitHub – it’s recommended that anybody brave enough to do that wears hazmat gear or at the very least a good quality wetsuit and breathing apparatus – and, although I can accurately make the claim that Stercore has been written in 100% machine code, it really isn’t “pure machine code” as some people used to claim on their cassette inlays. Oh no, this is the dirty, impure stuff that our parents would warn us about as children…

Femtotro (C64) and Zeptotro (C64)

Last week I was looking back at my intro collection Backlog and there was some method to my madness – most of the time there isn’t and it’s literally just madness – because at the time of writing I already had Femtotro pretty much completed. This new CSDb Intro Creation Competition entry is based on the small Babygang intro included within Backlog and, as with that 1991 release, my intention here was to keep things small. To that end the custom character set, some of the sprite definitions and chunks of data used by the code are being decompressed into the screen RAM and then hidden by changing the attributes for those areas so they match the background colour.

The result is, after some rather unceremonious hacking at 4-Mat’s music with the excellent Regenerator to relocate its work space down memory, an intro that can run in under 4K including the screen RAM as long as whoever is writing the scrolling message doesn’t feel particularly verbose. Even with the longer text included in this release it finishes near $1600 so is hovering around the 4.5K mark and, again, that’s with the screen RAM. There’s also no raster interrupt code included, another decision initially made to keep things close to the bone that also means there’s nothing to reset on that front once the space bar is pressed.

Then there is Zeptotro, a less than sensible attempt to take the idea of loading data into the screen memory that Femtotro is using just a teensy bit further. It only decrunches into the screen memory and never uses any space above $07ff when executing – the final memory footprint is $03c0 to $07ff – which sort of makes it invisible because, if there were a program linked to it, the intro could literally just exit by jumping straight to the start of its decruncher without having to relocate any memory first. Once again, the music is by 4-Mat and has been rather rudely pulled apart to relocate it in memory, in this case so that it could be included directly into the intro’s source code for brevity.

That does mean I owe Matt an apology for being so brutal to his music driver on both occasions, but it was in a really good cause I swear! As is always the case, there’s source code available for both Femtotro and Zeptotro over at GitHub if anyone fancies a little delve down through them.

Super Hyperzap (C64)

As promised in the previous post, here comes C64CD release time! First out of the gate is Super Hyperzap, a slightly remixed and improved version of my little gallery shooter Hyperzap 2018 which was actually completed around a day or so after the original escaped into the wild but then put aside to “release next week” and accidentally forgotten about during the subsequent shift to “demo mode”.

The main difference between Super Hyperzap and its predecessor is that many of the modifications that people asked for in comments online which had previously been omitted for “artistic reasons” have now been implemented, so there are a lot more sprite animations including an explosion sequence and as the game progresses the enemies begin to move horizontally as well.

That latter change fixes a design flaw in the original that it’d actually inherited from the original Hyperzap which meant it was possible to just sit still and hold the fire button and, whilst the gameplay is still simple enough, that updates does make things significantly more manic, especially on the later attack waves when nasties really start to shift around. It still won’t win any awards of course, but this version is a lot more fun to play!

As is always the case, source code and the relevant binaries can be downloaded from GitHub for folks wanting a delve around under the hood and there’s already a trained crack by Excess which was, rather impressively, released before I’d even finished writing this blog post about my own release.