A suite of tools for creating disassemblies of ZX Spectrum games
SkoolKit is a collection of utilities that can be used to disassemble a Spectrum game (or indeed any piece of Spectrum software written in machine code) into a format known as a skool file. Then, from this skool file, you can use SkoolKit to create a browsable disassembly in HTML format, or a re-assemblable disassembly in ASM format. So the skool file is - from start to finish as you develop it by organising and annotating the code - the common ‘source’ for both the reader-friendly HTML version of the disassembly, and the developer- and assembler-friendly ASM version of the disassembly.
Besides disassembling a Spectrum game into a list of Z80 instructions, SkoolKit can also:
- Build PNG or GIF images from graphic data in the game snapshot (using the #UDG, #UDGARRAY, #FONT and #SCR macros)
- Create hyperlinks between routines and data blocks that refer to each other (by use of the #R macro in annotations, and automatically in the operands of CALL and JP instructions)
- Neatly render lists of bugs, trivia and POKEs on separate pages (using [Bug], [Fact] and [Poke] sections in a ref file)
- Produce ASM files that include bugfixes declared in the skool file (with @ofix, @bfix and other ASM directives)
- Produce TAP files from assembled code (using bin2tap.py)
Quick start guide
SkoolKit includes fairly detailed documentation, but if you want to get up and running quickly, here goes.
To convert a SNA, Z80 or SZX snapshot of a Spectrum game into a skool file (so that it can be converted into an HTML or ASM disassembly):
$ sna2skool.py game.z80 > game.skool
To split the disassembly up into code and data blocks, you’ll need a ‘control file’. See the documentation for further details.
To turn this skool file into an HTML disassembly:
$ skool2html.py game.skool
To turn it into an ASM file that can be fed to an assembler:
$ skool2asm.py game.skool > game.asm