SkoolKit

Spectrum game disassembly toolkit

SkoolKit: The road to 1.1

SkoolKit 1.0 was released 28 days ago. Today, version 1.1 was released. Get your copy from the SkoolKit page (which conveniently includes a description of SkoolKit and some download links).

So what has changed since 1.0? Well, if I may liken the time taken and the work done between these two releases to a road, then that road was littered with bugs that were kicked aside into the ditch, and new features that were scooped up and taken home. Thus, that road is now safe and clear for you, the SkoolKit consumer, to take without fear of puncturing tyre or foot.

Having stretched and exhausted the somewhat dubious road metaphor, let me get into the details.

Most of the bugs were in the disassembler, sna2skool.py. In 1.0, it disassembled some instructions incorrectly, failed to recognise some other instructions (and disassembled them as DEFBs), or otherwise produced disassemblies that would not assemble back to something identical to the source snapshot. All those bugs (the ones I know of, at least) have been fixed.

As for the new features, well, sna2skool.py once again hits the headlines. It gained the ‘-g’ option (to generate a control file for a snapshot using basic static code analysis), the ‘-t’ option (to show ASCII text in the comment fields, thus making it easier to spot messages), and the ‘-s’ option (to specify the disassembly start address). It also now inserts comments at each routine entry point listing the callers of (or jumpers to) that entry point, making it easier to flick between related sections of code.

Elsewhere, skool2html.py gained the ability to write pages other than the disassembly files and memory maps (such as ‘Pokes’ and ‘Bugs’) for a skool file specified by the ‘-f’ option. Demonstrating this ability, SkoolKit now includes an incomplete disassembly of Contact Sam Cruise, for which skool2html.py will write a ‘Play area’ page, an ‘Animatory states’ page, a ‘Trivia’ page, and others. Elsewhere again, a sample control file for Manic Miner (manic_miner.ctl), and a utility script for converting skool files into control files (skool2ctl.py), have made their way into SkoolKit.

And last but not least, the Skool Disassemblies were updated to version 20100225. As usual, that version is available for browsing online, or you can obtain a pre-built copy here for offline browsing.

To sum up: even if I do say so myself - which I do - it’s worth upgrading to SkoolKit 1.1.

Disassembler dumbness

As luck would have it, SkoolKit 1.0 shipped with bugs in the disassembler, sna2skool.py. The bugs don’t affect the building of the Skool Disassemblies themselves, but will produce an incorrect disassembly from snapshots containing one of the following instructions: ‘XOR IYh’, ‘XOR IYl’, ‘XOR (IY+d)’, ‘SBC HL,SP’, ‘ADC HL,SP’, and the ED-prefix versions of ‘LD (nn),HL’ and ‘LD HL,(nn)’.

Here at pyskool.ca I don’t tolerate bugs, so in response I’ve pushed out a bugfix release of SkoolKit. You can get it from the SkoolKit page.

Of course, if you spot any other bugs, don’t be afraid to report them with appropriate amounts of indignation and bitterness.

SkoolKit 1.0

Have you ever browsed the Skool Disassemblies and thought: “Hmm, I wish I could build these disassemblies from the comfort of my own home instead of browsing them online or having to download a ready-made copy”? Almost certainly not, I would wager. But in complete disregard for that fact, I’ve gone ahead and prepared SkoolKit 1.0 for distribution anyway.

So what is SkoolKit? Well, you could think of it as one (or more) of the following:

  • The Skool Disassemblies in DIY or kit form
  • The ‘source code’ and ‘compiler’ for the Skool Disassemblies
  • ‘The Making of the Skool Disassemblies’

In other words, SkoolKit contains all the scripts and data files required to build the latest release of the Skool Disassemblies. It’s how I build the disassemblies (both the HTML and ASM versions), and now you can do it the same way. To obtain your copy of SkoolKit:

Once you’ve downloaded and unpacked SkoolKit, see the documentation in skoolkit.html for instructions on how to get started.

If SkoolKit does not pique your interest, never fear. You still have the option of browsing the ready-made Skool Disassemblies on this site, or grabbing a copy of them from here for local/offline browsing.

What’s new in the disassemblies themselves? To be honest, not much has changed since the last release - mostly because I’ve been working on preparing SkoolKit for distribution, and the last release was not that long ago - but the details are (as ever) in the changelog. Perhaps the most noteworthy change is that the disassemblies should now look the same in Internet Explorer as they do in other browsers. (I had no idea that they looked all wrong in the excuse-for-a-browser known as IE until yesterday.)

Happy disassembly-building (or not, as the case may be)!