ROM here to eternity

By | October 23, 2016

ORG 0It’s not every day that a new disassembly is added to the gallery here at skoolkit.ca, but today is just such a day. The new addition to the family is the Spectrum ROM disassembly, which showcases SkoolKit’s ability to produce disassemblies of not only games, but also, well, ROMs. Or, at least, this particular ROM.

This disassembly of the 48K Spectrum ROM began life as a control file back in SkoolKit 3.6 (version 20131102), and was recently ‘completed’ and published on GitHub (version 20160709). Since then, the control file has been shed in favour of a skool file, marking the disassembly’s eligibility for publication here in both browsable and downloadable forms (in decimal format, to boot).

There’s not much more to say – the Spectrum ROM’s source code speaks for itself, I think – except that since the inaugural ‘complete’ version (20160709), the system variables have been added, with complete lists of the routines that use them. Happy browsing!

Mostly about snapshots

By | September 5, 2016

#INCLUDE(foo)SkoolKit 5.3 has been released. In the interests of compatibility with earlier versions, copies of 5.3 are available from the download page, the Python Package Index, and the Ubuntu PPA. And for the first time, RPM packages for SkoolKit are also available from Fedora copr.

So, what new stuff could there be in 5.3 (as another, less well known poet once asked)? First, there are two new commands: snapinfo.py and snapmod.py. The former command will analyse a SNA, SZX or Z80 snapshot – display register values, list any BASIC program present, show the contents of a range of addresses, and search for specific text or byte sequences. The latter command will modify a 48K Z80 snapshot – change register values or hardware state attributes, and POKE or move the contents of a range of addresses. I’ve used prototypes of these commands through the years during my reverse engineering efforts, and I thought it was time they were promoted into the official SkoolKit distribution. Perhaps you, too, will find some use for them.

On the skool macro front, the new #INCLUDE macro joins the family as the 32nd member – an interesting milestone for any power-of-2 buffs out there. #INCLUDE expands to the contents of a ref file section (in HTML mode only), and so enables you to include one ref file section in another. Funnily enough, SkoolKit 1.x provided this feature via the :: ref file macro, but support for this (and all ref file macros) was removed in 2.0. Now that the capability has been restored in 5.3, I shall expect everyone to make use of it.

There are also two new features in the HTML output department. First, skool2html.py can now write a disassembly – the code and data part, that is – to a single HTML page. This makes routines, data blocks, labels, instructions and addresses more easily searchable (using the browser’s own search function). To make the switch from many pages to one, set the new AsmSinglePageTemplate parameter in the [Game] section equal to AsmAllInOne and away you go. Second, it’s now possible to create a custom ‘box’ page – like the Bugs and Pokes pages – by setting the SectionPrefix parameter in the [Page:*] section and then defining a bunch of suitably named ref file sections, one for each box on the page. For example, if you have SectionPrefix=Foo, and then two sections named [Foo:id1:Item 1] and [Foo:id2:Item 2], skool2html.py will render a page with two boxes labelled ‘Item 1’ and ‘Item 2’.

And that’s it for the main new features. As always, details of the less interesting changes can be found in the changelog. After doing due diligence there, why not analyse a snapshot or two, and then write the disassembly you’re currently working on to a single HTML page? There can surely be no better way to spend the rest of the day.

It cuts one way

By | May 11, 2016

One way sawMore than a year has passed since the last disassembly-related announcement on this website, so in an attempt to make up for lost time, here is an update on the Manic Miner and Jet Set Willy disassemblies, new versions of which have recently been released.

In the previous announcement concerning these disassemblies it was Manic Miner that got the lion’s share of the limelight (such as it was), but this time it’s Jet Set Willy that deserves most of the attention, with its five new bugs and seven new trivia entries. Among those bugs are the one where Willy can effectively teleport from the top of a room to the bottom by jumping off a rope, and also the one where Willy can become imprisoned inside a bunch of wall tiles at head height. Among the trivia entries are the story of the saw guardian that never turns round, and instructions on how to make Willy jump a little higher than the regulation 20 pixels. In comparison to these riches, the Manic Miner disassembly has gained a paltry one new bug and one new trivia entry since it was last mentioned here.

In addition to these obvious changes, there have also been some more subtle improvements to the disassemblies to make them read better when they are rendered in hexadecimal. For example, cavern numbers and entity numbers are now shown in hexadecimal instead of decimal, so as not to jar with the mass of hexadecimal addresses and DEFB statements.

Anyway, as always you can consult the changelog page for each disassembly for details on the new bugs and trivia entries (however great or small their number), and the download page to grab copies for offline viewing.