SkoolKit

Spectrum game disassembly toolkit

Manic Mnemonics

Manic Miner

Hot on the heels of the Jet Set Willy disassembly, here is The complete Manic Miner RAM disassembly (Bug-Byte version). Just like the Jet Set Willy disassembly, it began life as a bare-bones example control file bundled with SkoolKit (though much longer ago, back in February 2010). And just like the Jet Set Willy disassembly again, I recently decided to extract it, flesh it out, and release it separately. As you can see.

It should also come as no surprise that the disassembly - which, I might mention in passing, leaves no byte unannotated - comes with bugs and trivia pages. Although the bugs page barely escapes the ignominy of being called the ‘bug’ page, since there are only two bugs documented on it. But never mind - there’s a decent amount of trivia to make up for it, and there are a few POKEs too.

Getting back to the ‘just like the Jet Set Willy disassembly’ theme again, I would guess that most of the content of this disassembly is already familiar to the Manic Miner fans among you, but do take a look anyway, and let me know if you spot any mistakes (or any more bugs to document).

And finally: if you want a copy of the disassembly for offline viewing, you can get one here.

Farewell Willy, Hello Horace

Panic in the park

SkoolKit 4.1.1 has been released. Copies are available from the download page, as usual. Or, also as usual, you can install it (or upgrade your existing installation) from PyPI or the PPA.

4.1.1, as the semantic version number suggests, is a maintenance release, adding no new features to 4.1. Indeed, the main point behind 4.1.1 is to update all the links (in the documentation and the code) to SkoolKit’s new home, here, at skoolkit.ca. However, there are still a few things of interest to mention, in part because there was no announcement for 4.1 itself, which means there is some catch-up to do.

First of all, skool2asm.py and skool2html.py now have a --writer option for specifying the ASM or HTML writer class to use. This option makes it possible to use a SkoolKit extension module wherever it’s located - in the skoolkit package, or somewhere else as a standalone module - without modifying the skool file or ref file.

Next, skool2html.py now has a --search option for adding a directory to the resource search path. This means, for example, that if you have CSS files somewhere other than the current working directory, or the resources directory, or the directory where your skool/ref files are, you can make skool2html.py aware of them without moving them into the standard resource search path. Which could be useful.

Also new in 4.1 was the LinkInternalOperands parameter in the [Game] section of the ref file. This enables hyperlinks on a disassembly page to addresses on the same page (i.e. in the same routine), which is particularly useful in large routines, where a JP at the top of the page could point to an instruction way down at the bottom of the page. (In earlier versions, such hyperlinks were enabled only if you used ASM labels in the HTML output.)

Finally, in 4.1.1 itself, although there are no code changes, there is a change of example disassembly: Manic Miner has moved out and is now being developed separately, and in its place comes a bare-bones control file for Hungry Horace. Whether this new example disassembly will eventually migrate to its own home outside the SkoolKit distribution (like Contact Sam Cruise, Jet Set Willy and Manic Miner before it) remains to be seen.

For any remaining details, curious users may consult the changelog. Have fun with 4.1.1!

Jet Set Disassembly

Jet Set Willy

In something of a departure from the typical Microsphere-centricity of this site, I have released my fourth major Spectrum game-related reverse engineering effort: The complete Jet Set Willy RAM disassembly. This actually began life back in April 2012 as a bare-bones example disassembly bundled with SkoolKit, but a little while ago I decided to extract it, flesh it out, and release it separately. So here it is.

“But,” I can hear many of you exclaim, “why bother with Jet Set Willy? It’s already been disassembled, deconstructed, analysed and otherwise picked apart by a million other people!” That I cannot deny - and in fact I’ve made use of some of these pre-existing bodies of research - but the difference here is that this is a complete disassembly, of every byte, with annotations, all in one place. And in keeping with the tradition started by the Microsphere game disassemblies, there are bugs and trivia pages too.

So while most (if not all) of the content of this disassembly is probably already familiar to the Jet Set Willy fans among you, I’d encourage you to take a look anyway. You might learn something. You might spot some mistakes (in which case let me know). At the very least, you can rest assured that Jet Set Willy has been given the SkoolKit treatment for posterity.

One more thing: if you want a copy of the disassembly for offline viewing or archival purposes, you can get one here.