A suite of tools for creating disassemblies of ZX Spectrum games.
Python Shell Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
debian Update debian directory for 6.4 Mar 31, 2018
examples Set the value of the stack pointer in hungry_horace.t2s Jul 25, 2016
rpm Update rpm/skoolkit.spec for 6.4 Mar 31, 2018
skoolkit Change the default value of the 'path_id' parameter of handle_image() Jul 18, 2018
sphinx Reverse the order of 'Changed in version' notes Jul 19, 2018
tests Change the default value of the 'path_id' parameter of handle_image() Jul 18, 2018
tools Refactor tools/skooldiff Jul 20, 2018
utils Change the values used by the @assemble directive Jun 11, 2018
.gitignore Store diffs for the Hungry Horace disassembly in the 'diffs' directory Aug 25, 2016
.travis.yml Fix Travis CI builds for Python 3.4 and 3.6 Feb 3, 2018
COPYING Initial commit Mar 10, 2013
MANIFEST.in Move 'resources' into the skoolkit package directory Dec 31, 2014
Makefile Show missing lines in coverage report Feb 15, 2018
README.md Drop support for Python 2.7 Jan 12, 2017
bin2sna.py Use Python 3 by default Jan 12, 2017
bin2tap.py Use Python 3 by default Jan 12, 2017
setup.py Mention the Hungry Horace disassembly where appropriate Dec 7, 2017
skool2asm.py Use Python 3 by default Jan 12, 2017
skool2bin.py Use Python 3 by default Jan 12, 2017
skool2ctl.py Use Python 3 by default Jan 12, 2017
skool2html.py Use Python 3 by default Jan 12, 2017
skool2sft.py Use Python 3 by default Jan 12, 2017
sna2img.py Use Python 3 by default Jan 12, 2017
sna2skool.py Use Python 3 by default Jan 12, 2017
snapinfo.py Use Python 3 by default Jan 12, 2017
snapmod.py Use Python 3 by default Jan 12, 2017
tap2sna.py Use Python 3 by default Jan 12, 2017
tapinfo.py Use Python 3 by default Jan 12, 2017

README.md

Build Status Coverage

SkoolKit

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.

Requirements

SkoolKit requires Python 3.4+. If you're running Linux or one of the BSDs, you probably already have Python installed. If you're running Windows or Mac OS X, you can get Python here.

Features

SkoolKit can:

  • convert a TAP or TZX file into a 'pristine' snapshot (using tap2sna.py)
  • disassemble SNA, Z80 and SZX snapshots as well as raw memory files
  • distinguish code from data by using a code execution map produced by an emulator
  • build still and animated PNG/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)

See the user manual for more details (mirror here).