SkoolKit

Spectrum game disassembly toolkit

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).

Two-dot-two-dot-two

setup.py install

SkoolKit 2.2.2 is now available from this download page. Why am I gracing the release of what is merely the second revision of the 2.2 series with a blog post? Well, it’s the first time that SkoolKit’s version number has been of the form X.X.X. And I never got round to gracing the release of 2.2 with a blog post, for which I feel bad. Sorry 2.2. I’m trying to make up for that.

Now, I could just send you over to the changelog for a summary of what’s new since 2.1, but that would make for a short and almost pointless article (in addition to being lazy). So instead I’ll request that you stay here for a bit and read on.

Since 2.1 was released, skool2asm.py and skool2html.py have gained the ability to produce output in lower case, upper case, hexadecimal, or decimal, regardless of the format of the source skool file. sna2skool.py, too, can now produce lower case disassemblies (it could already do upper case, hexadecimal and decimal). And skool2asm.py, skool2ctl.py and skool2html.py can read from standard input, which allows you to chain commands and therefore (for example) disassemble a snapshot to ASM format without producing an intermediate skool file:

sna2skool.py game.z80 | skool2asm.py - > game.asm

Next: SkoolKit can now be installed as a Python package using the supplied setup.py script; unit tests (for people who like that kind of thing) are included in the tests directory; man pages are included in the man directory; and developer reference documentation has been added (providing instructions on how to run the unit tests and build the documentation and man pages from source).

Next: the load code, save code and start code skool files for Skool Daze, Back to Skool and Contact Sam Cruise have been tweaked to make them usable with skool2asm.py. So if you’ve been itching to use Back to Skool’s tape saver routine but couldn’t be bothered to type it out, 2.2.2 is your friend.

And finally: bug fixes. Quite a few, actually. Here I will point you to the changelog for full details.

That’s about it. Please tune in again when 2.3 is released. (Or 3.3.3. We’ll see.)

SkoolKit 2.1: Better than hex?

Better than hex?

SkoolKit 2.1 is now available from this very website. Get your fresh copy from the ever-present download page.

Now, as the title of this article asks in abbreviated form: What could be better than hexadecimal support in SkoolKit? I couldn’t think of an answer to that question, so I made support for hex the top item on the SkoolKit TODO list the past few weeks. What that means is that you are no longer tied to using decimal addresses in your disassembly. The disassembler, sna2skool.py, can now produce a hexadecimal skool file, and both skool2html.py and skool2asm.py will work just fine with it. So if you’re the kind of hex-headed disassembly-monger for whom $8000 is immediately more meaningful than 32768, you should be smiling inside at this point. Go and get SkoolKit 2.1 now!

In other news, SkoolKit is now more un-Skool-game-centric than ever. Specifically, all the skool macros that were useful only in the Skool Disassemblies (such as #MSG, #BOX and #TAP) are gone, their effects now being achieved by the use of generic macros (such as #R and #UDGARRAY). In addition, all the ref file sections that were useful only in the Skool Disassemblies (such as [Lessons]) and [Characters]) are gone too. No longer will you be distracted by a bunch of skool macros and ref file sections that will never be of any use in your ‘Stonkers’ or ‘Infection’ disassembly (or whatever).

As is traditional when SkoolKit’s version number is X.Y (with no .Z on the end), the Skool Disassemblies have been updated. And as is also traditional, you can browse these disassemblies online, or download a copy for offline viewing, or download SkoolKit and build a copy yourself. Also, don’t forget that the incomplete Contact Sam Cruise disassembly is still in progress. With any luck, I’ll be able to call it ‘complete’ some time this year.