Alternative #FACTs

SkoolKit 6.0 has been released. And in anticipation of your next question, let me just say that copies are available from the download page, the Python Package Index, the Ubuntu PPA, and the Fedora copr repo.

Before we get into what’s new in this initial release of the 6.x series, a quick reminder of the some of the more prominent features you’ve come to know and love in previous versions that have been ruthlessly removed: the #BUG, #FACT, #POKE, #EREFS and #REFS macros; the [PageContent:*] ref file section; the parse_params() function, and the parse_image_params(), flip_udgs() and rotate_udgs() methods on HtmlWriter. But do not despair: check the migration guide for details on how to restore these features (should you wish to).

Now, what’s new in 6.0? Strangely, there are no new commands or ASM directives, and only one new (and trivial) skool macro (#VERSION). (The 6.x series is still young, so let’s give it time to venture into those areas.) But the sna2img.py command does have a new option: --expand. This allows you to expand an image macro (#FONT, #SCR, #UDG or #UDGARRAY) outside the context of a skool or ref file. Which could be useful if you just want to make sure you’ve got all your macro parameters straight before committing an image macro to said skool or ref file. Or if you just want to create a standalone image from a game snapshot, and don’t want to bother creating a skool or ref file first.

Also sporting a new option is the tapinfo.py command with --basic. Like the option of the same name sported by snapinfo.py since 5.3, it lists the BASIC program in a specified tape block. Yes, at last, SkoolKit provides a convenient way to examine the first thing any reverse engineer worth his salt will want to look at when starting work on a new game: the BASIC loader. Previously you might have been able to convert the tape into a snapshot with tap2sna.py and then used snapinfo.py --basic on it, but you probably (justifiably) thought that was too much work.

Yet another command enjoying a new option in 6.0 is snapinfo.py with --find-tile. This one enables you to search the RAM for the graphic data of a tile currently on screen. By default it will search for a contiguous block of 8 bytes that match the tile at the specified coordinates, but it can also search for graphic bytes separated by a fixed distance (e.g. 2, as is common with 2x2 sprites), or a range of distances (e.g. 1-256) if you’re unsure about how the graphic data is organised.

By now you might be thinking that new options for old commands is the entire story for 6.0, and you’d be mostly right. But if you want to find out about the non-option-related new features, you should check the changelog.

And that’s all the news. You are now encouraged to download a copy, and migrate your existing disassemblies to the new reality that is SkoolKit 6.0. Good luck!