TL;DR version for the initiated: tap2sna.py can now load 128K games. Try it with some of the thousands of ready-made t2s files.
For the uninitiated: SkoolKit is a suite of tools that can be used to create a disassembly of a Spectrum game (or any other piece of software), in HTML form or as plain assembly language, from a single set of source files. For example, it has been used in the production of many of the fine disassemblies on this page:
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
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 assembly language 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 TAP or TZX file into a 'pristine' Z80 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 tapinfo.py to analyse the blocks in a TAP or TZX file, and list the BASIC program it contains
use bin2tap.py to convert a snapshot or raw memory file into a TAP file
use bin2sna.py to convert a raw memory file into a Z80 snapshot
use snapmod.py to modify the register values or memory contents in a Z80 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
For full details on what's new in 9.0, check the changelog.
SkoolKit - disassemble a game today Pyskool - a remake of Skool Daze and Back to Skool
Ubuntu DEB packages are no longer offered as a means of installation, right? I still have the 8.8 package installed, and the repository cloned, but I'm figuring out how to install it seamlessly on my Ubuntu box.
TheMartian wrote: ↑Sat Nov 04, 2023 11:44 am
Ubuntu DEB packages are no longer offered as a means of installation, right? I still have the 8.8 package installed, and the repository cloned, but I'm figuring out how to install it seamlessly on my Ubuntu box.
Yes, I stopped providing them because I doubted that anyone was actually using them. Now I know at least one person is, I'll resume the practice.
Hi Richard, thanks for the continuing development of Skoolkit...it's a great tool! I do have a question/suggestion/request
Have you thought about supporting Gameboy disassembly?
It feels like just adding support (!) for parsing of the .gb header and different memory banks is needed -- easy for me to say I know!
I was recently looking over the mgbdis tool on github and although it's okay, it's control file support is very minimal, making it difficult to come close to do what Skoolkit can do!
mrcook wrote: ↑Sat Nov 04, 2023 4:41 pm
Have you thought about supporting Gameboy disassembly?
I can honestly say I have not!
It feels like just adding support (!) for parsing of the .gb header and different memory banks is needed -- easy for me to say I know!
This sounds like a job for a custom SkoolKit component. Just a snapshot reader, by the sounds of it. Like the VSF snapshot reader that's part of sk6502 (SkoolKit components for 6502 disassembly).
I don't think I would make this part of SkoolKit proper, and I'm not sure when I would get round to it, but if anyone's familiar with Python and the .gb format, I'm willing to give advice on how to go about making a .gb reader component.
SkoolKit - disassemble a game today Pyskool - a remake of Skool Daze and Back to Skool
The first two files (skoolkit-9.0.tar.xz and skoolkit-9.0.zip) are the official releases, built by me. The other two 'Source code' files are copies of the repository contents, placed there automatically by GitHub. I don't think I have any control over those.
SkoolKit - disassemble a game today Pyskool - a remake of Skool Daze and Back to Skool
Not related to the latest release in particular, but if you haven't had a look at the disassembly links page in a while, you'll have missed some recent additions:
By the looks of it, @pobtastic and Ritchie Swann (not on this forum, to my knowledge) are set to reverse engineer the entire Spectrum games catalogue by the end of the decade. Let's give them all the moral and practical support they need!
SkoolKit - disassemble a game today Pyskool - a remake of Skool Daze and Back to Skool
SkoolKid wrote: ↑Mon Nov 06, 2023 11:02 pm
The first two files (skoolkit-9.0.tar.xz and skoolkit-9.0.zip) are the official releases, built by me. The other two 'Source code' files are copies of the repository contents, placed there automatically by GitHub. I don't think I have any control over those.