Skip to content

skoolkid/skoolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3,883 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tests 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 assembly language. 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 version of the disassembly.

Requirements

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

Features

With SkoolKit you can:

  • use sna2ctl.py to generate a control file (an attempt to identify routines and data blocks by static analysis) from a snapshot (SNA, SZX or Z80) or raw memory file
  • enable sna2ctl.py to generate a much better control file that more reliably distinguishes code from data by using a code execution map produced by an emulator, rzxplay.py or trace.py
  • use sna2skool.py along with this control file to produce a disassembly of a snapshot or raw memory file
  • add annotations to this disassembly (or the control file) as you discover the purpose of each routine and data block
  • use skool2html.py to convert a disassembly into a bunch of HTML files (with annotations in place, and the operands of CALL and JP instructions converted into hyperlinks)
  • use skool2asm.py to convert a disassembly into an assembler source file (also with annotations in place)
  • use skool2ctl.py to convert a disassembly back into a control file (with annotations retained)
  • use skool2bin.py to convert a disassembly into a raw memory file
  • use tap2sna.py to convert a PZX, TAP or TZX file into a 'pristine' Z80 or SZX snapshot
  • use snapinfo.py to analyse a snapshot or raw memory file and list the BASIC program it contains, show register values, produce a call graph, find tile graphic data, find text, or find sequences of arbitrary byte values
  • use trace.py to trace the execution of machine code in a snapshot or raw memory file
  • use rzxplay.py to trace the execution of machine code in an RZX file, and produce a code execution map for sna2ctl.py
  • use tapinfo.py to analyse the blocks in a PZX, TAP or TZX file, and list the BASIC program it contains
  • use rzxinfo.py to analyse the blocks in an RZX file, and extract snapshots from it
  • use bin2tap.py to convert a snapshot or raw memory file into a PZX or TAP file
  • use bin2sna.py to convert a raw memory file into a Z80 or SZX snapshot
  • use snapmod.py to modify the register values or memory contents in a Z80 or SZX snapshot
  • use sna2img.py to convert graphic data in a disassembly, SCR file, snapshot or raw memory file into a PNG image

In an HTML disassembly produced by skool2html.py you can also:

  • use the image macros to build still and animated PNG images from graphic data
  • use the #AUDIO macro to build WAV files for sound effects and tunes
  • use the #R macro in annotations to create hyperlinks between routines and data blocks that refer to each other
  • use [Bug:*], [Fact:*] and [Poke:*] sections in a ref file to neatly render lists of bugs, trivia and POKEs on separate pages

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

About

A suite of tools for creating disassemblies of ZX Spectrum games.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors