Saturday, April 2, 2011

An .s3m quirk.

I thought I'd start another blog, this time focusing on technical aspects of various tracker module formats, most likely focusing on .mod, .s3m, .xm and .it.

So let's start with something 8bitbubsy pointed out.

.s3m has a rather useful quirk when it comes to actually making a player. Normally you don't encounter this, but if you ever play Purple Motion's "Satellite one." then you'll probably encounter a stuck note if you're not actually using ST3 itself (nickysn's "tralala" written in pascal is an exception to this rule). There are two quirks here.

What happens is that Kxx actually gets the xx from Hxx, so you basically end up with H81, K81.

Why? Only a few effects actually have their own special memory (G, H/U, O). All the others which use effect memory just use the last nonzero effect value used in that track.

According to this, of which I have contributed a lot to and nickysn has done a whole bunch more on (plus trixter made a note), D/E/F/I/J/K/L/Q/R are the ones which reuse the previous nonzero effect value.

From what I gather, XMPlay does not implement this quirk.

So what about the K81? Someone could be bothered actually documenting it:
Dxy, 1 <= x <= 0xE, 1 <= y <= 0xE: Scream Tracker treats it as a slide down by y, i.e. equivalent to D0y. Impulse Tracker does nothing.

Hang on, that page still has the TODO there... ok, fixed.

If you want to be truly irritating, you can try screwing around with this quirk, like I did on battleofthebits (module download). That module managed to get second out of 4 places, too, though that was probably because ToastyX's entry absolutely owned.

So yeah, uh, just about nothing gets this quirk right, just because people had to make assumptions.

No comments:

Post a Comment