Spectrum game disassembly toolkit

Horace and the disassembly

Arriving just in time for Christmas, a new disassembly has just been added to the gallery here at The complete Hungry Horace RAM disassembly.

This disassembly began life as a bare-bones control file back in SkoolKit 4.1.1 (version 20140920), and was recently ‘completed’ by adding annotations to all the routines, data blocks and text blocks. There are no ‘Bugs’, ‘Pokes’ or ‘Trivia’ pages yet, but you can expect them to appear in the next update.

Of course, the disassembly is also available in downloadable form, and a hexadecimal version can be browsed at GitHub too. There’s never been a better time to find out what makes Horace and the park guards tick!

Skool files to screenshots

SkoolKit 6.1

SkoolKit 6.1 has been released. As is the custom on occasions like this, copies are available from the download page, the Python Package Index, the Ubuntu PPA, and the Fedora copr repo.

The main new feature in this release is support for changing the default behaviour of, and via a configuration file: skoolkit.ini. For example, if you always use the --hex option with, you could place the configuration parameter Base=16 in the [skool2asm] section in skoolkit.ini, and save some time by never having to type --hex on the command line again. But what if you want to run without the implied --hex option once in a while? That’s where the new --ini option comes in: just run --ini Base=0 and it will override the Base=16 parameter in skoolkit.ini.

One other benefit of having configuration in skoolkit.ini is that you can now define, via various parameters, the format of the comments that uses to list the callers of entry points in routines when generating a skool file from a control file, and also the format of the titles it uses for untitled blocks. As far as I’m aware, this removes the last bit of hard coded text from the SkoolKit codebase, and leaves it to the discretion of the user to define.

Next up comes support for arithmetic expressions in instruction operands when converting base and assembling. For example, in earlier versions, LD A,32768/256 would be (partially) converted to LD A,$8000/256 when the --hex option of or was used, but now it is fully converted to LD A,$8000/$100. Also in earlier versions, would fail to assemble LD A,32768/256, but now it handles such instructions just fine.

And finally among the noteworthy new features, can now read skool files. This means that if you’ve mislaid the snapshot that you originally used to generate your skool file, you need not worry: can automatically build a snapshot from your skool file on the fly so that you don’t have to.

For details of all the other changes and bugs fixed in this release, check the changelog. After that, go grab a copy of 6.1, create your ideal skoolkit.ini, and enjoy the brevity of all your, and commands from here on out.

All the disassemblies


With SkoolKit 6.0 came many compatibility-breaking changes that rendered all but one of the current versions of the disassemblies hosted here utterly broken. Not one to let a disgraceful situation like that stand (for too long, anyway), I have stepped in and published updated versions that build successfully with 6.0. And I could just leave it there, possibly breaking the record for the shortest post ever on this site, but there are a few things besides the porting to 6.0 to mention.

First, the hexadecimal versions of the Skool Daze, Back to Skool and Contact Sam Cruise disassemblies have been greatly improved, in the sense that thare are now far fewer jarring instances of decimal numbers floating around in them. For example, animatory states, character numbers and message numbers are all shown in hex rather than decimal, which should make things more comprehensible for the base-16-minded among you. In addition, the Skool Daze disassembly has two new trivia items.

Next, the hexadecimal versions of the Manic Miner and Jet Set Willy disassemblies have also seen a purge of extraneous decimal numbers, albeit on a smaller scale than in the SD/BTS/CSC disassemblies (which were staunchly decimal until now). And the Jet Set Willy disassembly has a new bug entry concerning the in-game tune.

Finally there is the 48K Spectrum ROM disassembly (decimal version here). It didn’t require porting to 6.0, but I have added register tables to all the routines that take input values or produce output values, which I hope will aid in the general understanding of this seminal work of Z80 assembly language programming.

So there we are. These disassemblies are now safely buildable for another major series of SkoolKit releases. See you again when 7.0 is released (or shortly thereafter).