SkoolKit

Spectrum game disassembly toolkit

Recess repetition

PLAYTIME PLAYTIME

Having picked up the disassembly release ball last month, I am now running with it. The next batch of disassemblies to see a release is the Microsphere trio: Skool Daze, Back to Skool and Contact Sam Cruise.

As for the changes, the TL;DR version is that Skool Daze got five new trivia entries, Back to Skool got four new trivia entries and a new bug, and Contact Sam Cruise is the real loser with just one new POKE. Since the bug and the trivia entries are more interesting than the POKE (sorry Sam), I’ll concentrate on those for the remainder of this post.

So, the bug in Back to Skool. It’s a pretty good one, though you have to do some hard work up front in order to reap the benefits. First, get the key to the safe - a process that involves a water pistol, water, sherry, cups, stinkbombs, the bike, a conker, mice (possibly) and the frog. Now make your way into the head’s study and stand under the safe. Next, wait until ERIC’s lines total reaches 10000 or more, and then quickly jump up to the safe before MR WACKER has a chance to expel him. After that, ERIC is free to cause mischief without fear of expulsion until his lines total rolls over the maximum 655300 mark back round to zero, and then past 10000 again. Nice, eh? For details on what makes this possible, see the bug description.

And now Skool Daze. While playing that game, have you noticed how the kids all try to sit at back of the class when the teacher arrives at the doorway, which means that EINSTEIN always ends up in the back seat? I have too, but I’ve also noticed that occasionally EINSTEIN will sit somewhere else - for example, just behind the front seat in the Map Room. Having wondered why for the last 30 years or thereabouts, I finally investigated, and you can find the results of that investigation in Seat selection. Mystery solved.

Another thing about Skool Daze: every now and then in the timetable, there is one playtime followed immediately by another. In fact, this happens a total of five times. However, the bell doesn’t ring between those playtimes, so effectively they are double-length playtimes rather than distinct playtimes. One rather shocking consequence of this is that the bell rings only 59 times throughout the entire timetable of 64 periods. For more information on these anomalies, see Double playtimes.

And that’s all the disassembly news (again). For details on the other trivia entries and the POKE, see all the changelogs.

Animation aberration

Animated platform

In what I confidently predict will be a year in which I release updates to some of the disassemblies that are hosted on this site, the first ones to see a new release are Manic Miner and Jet Set Willy.

First of all, Manic Miner’s bugs page has swelled by 50% to an impressive three entries. The new entry on the block concerns the platform in Amoebatrons’ Revenge whose third row of pixels is animated, as if it were a conveyor. This is one of those bugs that I don’t remember whether I ever noticed back in the day. But I noticed it again recently, and have duly documented it for your edification.

Next, I have provided a POKE for each game that gives Willy unlimited time to complete his task. Use it either with the infinite lives POKE for complete invincibility, or without for the freedom to navigate the caverns and rooms tantalisingly mixed with a sense of impending doom lest you mess up too many jumps that require perfect precision.

And that’s all the disassembly news (for now).

Hex mania

0xB00B.html

SkoolKit 4.3, as I write this, has just been released. Copies are available from the usual places, such as the download page, the Python Package Index, and the Ubuntu PPA.

If you’re a long-time SkoolKit user (which you probably aren’t), you might remember the release of SkoolKit 2.1, which brought with it support for hexadecimal disassemblies for the first time ever. No longer did you have to tolerate reading (or writing) ‘43981’ when what you really wanted to read (or write) was ‘$ABCD’. However, there was a small gap in this so-called ‘support for hexadecimal disassemblies’: disassembly page filenames and address anchors were still obstinately decimal. If you noticed this omission, you might have been left feeling disappointed, perhaps even sick to your stomach. For that, I belatedly apologise.

Enter SkoolKit 4.3, and the CodeFiles and AddressAnchor parameters (in the [Paths] and [Game] sections respectively). By cunningly crafting the values of these parameters, you can produce HTML disassemblies with hexadecimal filenames and address anchors (with or without a ‘0x’ prefix). Or, if you’re in the mood, you can have filenames and address anchors in binary format. The choice is, as the saying goes, yours.

Another long overdue feature in 4.3 is support for block start comments. It is now possible to place a comment above the first instruction in a routine, after the register section (if there is one). Until now I’ve always appended such introductory comments to the routine description, which ends up looking a little odd if there’s a register section blocking the line of sight to the first instruction (as it were). Now I look at it, this is a feature that really should have been in SkoolKit 1.0. Better late than never, I suppose.

Elsewhere, the #FONT, #SCR and #UDG macros have picked up the ability to create frames for an animated image (an ability previously restricted to the #UDGARRAY macro). And sna2skool.py can now write skool files narrower or wider than 79 characters by using the new --line-width option - something you youngsters with your wide screens and your high-resolution displays will appreciate, no doubt.

Finally, a couple of (deprecation) warnings. Starting with SkoolKit 4.3, the preferred way of writing an ASM directive (e.g. @start) in a skool file is without the ‘; ‘ prefix. In addition, the preferred way of writing an ASM directive in a control file is by using the new ’@’ directive. The old ways of writing an ASM directive in a skool or control file will be supported for the remainder of the 4.x series, but are deprecated. Support will be removed in 5.0, whenever that arrives.

To sum up, then, grab a copy of SkoolKit 4.3 and get your hex on.