Bases and spaces   March 8th, 2014

DEFB %11100111SkoolKit 3.7 has been released. As usual, copies of this release are available, in various formats, from the download page. If, however, the idea of downloading SkoolKit from this site repels or offends you, you can install it via PyPI or the PPA instead. The choice is yours.

The last release to get an announcement on this here website was version 3.5 over six months ago, so I should probably go over a few of the changes that have taken place since then. For the image-creating fans among you, the big news is that the #UDGARRAY macro is now capable of building animated images from an arbitrary sequence of frames (each of which is built using a special form of the macro). SkoolKit has had support for building animated images that contain flashing cells since 3.0.1, but the new, enhanced #UDGARRAY macro enables you to be a bit cleverer and produce animated sprite images such as the ones of Miner Willy in the incomplete Manic Miner disassembly.

On the subject of disassemblies, a new one has joined the examples distributed with SkoolKit: the incomplete Spectrum ROM disassembly. It was made possible in part by the (new) support for disassemblies with a start address below 10000, and sits proudly alongside the incomplete Jet Set Willy disassembly and the aforementioned Manic Miner disassembly. In addition, built versions of these example disassemblies are now published online (as you may have gathered).

In the number bases department, SkoolKit now supports binary numbers in DEFB, DEFM, DEFS and DEFW statements. That is, they can be parsed in skool files for the purpose of building a snapshot (as demonstrated by the character set in the incomplete Spectrum ROM disassembly), and can be preserved in and restored from control files and skool file templates. The base of decimal and hexadecimal values can be preserved too by using the new --preserve-base option of and

Finally, on the control directive front, the ‘z’ and ‘Z’ (zero) directives have been deprecated in favour of the new ‘s’ and ‘S’ (space) directives, which can encode DEFS statements with non-zero byte values (e.g. ‘DEFS 8,255′) – something that was not possible with the old ‘Z’ directive. Now that the ‘s’ and ‘S’ directives are here, I really do wonder how we ever did without them.

As ever, more details on the changes since 3.5 can be found in the changelog. Here’s hoping they keep you going until 3.8 arrives!

Posted in SkoolKit | No Comments »

Frozen dinner   January 26th, 2014

Quit Pyskool?Pyskool 1.1.1 has been released. This brand spanking new version for 2014 brings a few small enhancements and a bugfix to 1.1 (which, at the time, was a brand spanking new release for 2013). Impatient readers can head over to the download page now to grab a copy; the rest of you can stick around for some details on the changes since the previous release.

First of all, Pyskool now has a quit confirmation screen, shown by default when you press Escape (though not when you click the window close button). In keeping with Pyskool’s philosophy of ease of use, the screen displays, beneath the title ‘Quit Pyskool?’, two options whose meaning I hope is clear: ‘Yes’ and ‘No’. The player is then left to decide, at his leisure, whether to actually quit (‘Yes’), or to continue playing (‘No’). If, however, you’re one of those confident, accident-free players who never hit Escape without meaning it, and would be irritated by such trivial questioning, you can disable the confirmation screen by setting ConfirmQuit to 0 in the [GameConfig] section. On the other hand, if you’re one of those indecisive, accident-prone players who sometimes even click the window close button and immediately regret it, you can enable the confirmation screen in this situation by setting ConfirmClose to 1 in the [GameConfig] section.

Second of all, there is now an item on the main menu to switch between full-screen and windowed mode. True, this feature has been available since version 1.0 by pressing F11, but that fact was never mentioned anywhere in the documentation (except in the changelog). Now that it has its own menu item, perhaps more people will notice it, use it, and enjoy it.

Third of all, there is now support for appending content to existing ini file sections. This is done by adding a ‘+’ suffix to the section name. For example, if you add a section named [SkoolLocations+] to an ini file that is read after config.ini, then its contents will be appended to the contents of the [SkoolLocations] section in config.ini, rather than entirely replacing them. Which could be useful.

Finally, there was a bug in 1.1 and earlier versions that froze the game if Eric’s lines total went over 10000 (or Eric jumped out of the top-floor window) while he was being fetched by the teacher on dinner duty. This bug has been fixed, so you can now play Pyskool with confidence that Mr Wacker will hunt Eric down and expel him as appropriate even if it’s dinner time.

Posted in Pyskool | 2 Comments »

Making WAVEs   December 1st, 2013

Biff! Pow! Smack!Pyskool 1.1 has been released. As always, the download page is waiting to serve up tarballs, zip archives, DEB packages and RPM packages.

It’s been about a year since the last release, so I thought it was time to venture into the vaults, track down and dust off Pyskool 1.0.1, and check that everything was still in good working order. Turns out everything is, but I updated a few things anyway while I was there.

Chief among the updates is a completely new set of sound files. The old sound files – most of which first appeared over five years ago in Pyskool 0.0.3 – were actual recordings of the audio output of a Spectrum emulator, made at the lofty frequency of 11.025kHz. Not surprisingly, then, they sound a little rough when you listen carefully (especially safe-key.ogg). The new sound files, however, are 44.1kHz streams programmatically generated from a precise analysis of the delays between speaker flips in the sound routines of the original games (taking into account contended memory and interrupts). Whether they sound more or less authentic than the emulator recordings, I’m not sure, but they are undoubtedly of much higher quality.

With a Spectrum-speaker-to-WAV library in place, then, I also took the liberty of adding hitting sound effects to Skool Daze. (Be honest: did you realise they’d been missing all this time?) In addition, Skool Daze and Back to Skool now have their own distinct sound effects for the bell, lines-giving, and Eric walking (instead of sharing them, as they had done up till 1.0.1).

So that covers the main changes to Pyskool itself, but in other news, the latest Pyskool code is now hosted on GitHub, and stable releases of Pyskool are just a pip install away via the Python Package Index. The avid Pyskooler can find even more details on the changes since 1.0.1 in the changelog.

Download Pyskool 1.1 today and hear the difference!

Posted in Pyskool | No Comments »