SkoolKit

Spectrum game disassembly toolkit

Cruise news

Cruise news

The Contact Sam Cruise disassembly has just seen its fourth update since I announced that it had become ‘complete’ about six months ago. Since then, I’ve documented 14 more bugs, added 9 more trivia items, composed a walkthrough guide, and filled out the list of graphic glitches. If you haven’t stopped by to look at the disassembly in a while, there’s a good chance you’ll find plenty of new stuff to peruse.

Of the bugs documented in the last six months, my favourite is probably Hiding in plain sight, in which Sam evades arrest by the zealous city cops on the beat by merely standing on the edge of a roof, in plain sight of anyone who cares to look. Of the trivia items added in the last six months, my favourite is definitely Hidden ground, which reveals an underworld (kind of) in Sam’s home city that, to my knowledge, has never been seen by the CSC-playing public before. What’s funny about it is that the very first trivia item added to the disassembly - nearly two years ago as I write this - was Hidden sky, but it didn’t occur to me until very recently to investigate the nether portions of the play area for a similar phenomenon.

Anyway, for further details of all the changes, consult the changelog. As ever, you can browse the entire disassembly online, or download a copy for offline viewing, or build it yourself from the source skool and ref files included in the offline copy (for which you’ll need at least version 2.4 of SkoolKit).

A bit about the Kit

i love flipping

SkoolKit 2.4 is now available from the usual download page. It’s been a while since I dedicated a blog post to a new version of SkoolKit, but that’s not because nothing’s been happening. On the contrary, some things have been happening. If you’ll bear with me, I’ll try to summarise the most significant and least boring changes in the six releases made since 2.2.2 came out over six months ago.

The biggest new feature is the addition of the skool2sft.py command, which can convert a skool file into a ‘skool file template’. What’s a skool file template? It’s a bit like a control file, except that it preserves the following elements that control files don’t: all ASM directives, data definition entries, remote entries, and comments that are not part of a code or data block. Put more simply, a skool file template is a skool file without the Z80 instructions; to insert the Z80 instructions, you supply a Z80 (or SNA) snapshot and run that and the skool file template through sna2skool.py. For more details, see the documentation.

Even if you don’t plan on using skool file templates, you still might find sna2skool.py’s support for them useful. For example, you could feed a snippet of a skool file template to sna2skool.py in order to disassemble a portion of a snapshot (instead of the entire thing) thus:

$ echo 'cC32768,20' | sna2skool.py -T - game.z80

This would print a disassembly (in skool file format) of 20 bytes, starting at 32768.

In other news, skool2html.py now supports multiple ref files per disassembly. So if your existing game.ref is getting large and unwieldy, you could split it up into smaller files named game*.ref for easier maintenance. And speaking of ref files, support for [Changelog:*] sections has been reintroduced, making it easier to generate a disassembly changelog page (such as the one for Skool Daze).

On the image creation front, the #UDGARRAY macro has been enhanced so that masks can be specified, and both the #UDG and #UDGARRAY macros have been enhanced so that images can be flipped (horizontally and/or vertically) and rotated.

And finally, as always, there are a few bug fixes, including one that prevents sna2skool.py from choking on ancient version 1 Z80 snapshots (which are evidently still in use by some people). See the changelog for details of the other fixes.

So that’s all the SkoolKit news for now. Time to get cracking on 2.4.1.

Just another disassembly

The incomplete Contact Sam Cruise disassembly - which made its first appearance as an example control file back in SkoolKit 1.0.7 - has finally made the transition to ‘complete’. What does ‘complete’ mean, exactly? Well, every data block has a description that is somewhat informative, and every routine is fully annotated. (By that standard, the Skool Daze and Back to Skool disassemblies were certainly not ‘complete’ when I originally published and described them as such. But standards change, you know.)

And what does ‘complete’ not mean, exactly? Well, it doesn’t mean that I’ll never make any additions, corrections or other improvements to the disassembly. So, in other words, it might be ‘complete’, but it’s not ‘finished’. For example, I’ll probably be adding new pokes, bugs, trivia items and graphic glitches as I discover them, and also fixing errors along the way (just as I still do with the Skool Daze and Back to Skool disassemblies).

Enough talk. You can browse the complete Contact Sam Cruise disassembly online, or download a copy for offline viewing, or build it yourself from the source skool and ref files in the latest version of SkoolKit (2.2.3, released today).