SpeedLock

edited February 2013 in Games
I'm aware that there are seven (7) - yes, SEVEN!! - different iterations of the SpeedLock loader. I've loaded games from all 7 types, one by one, and I can say with some authority, that despite the moniker, some games do not use the SpeedLock scheme. Here are some of the basic known features-cum-prerequisites of the loader:

- Data can be recorded in either BASIC and/or CODE blocks (typically one of each)
- Data can either be encrypted or left as it is
- Non-standard colours (typically red/black for pilot tone and blue/black for data)
- The title screen appears suddenly and there is a countdown timer (minutes: seconds: deciseconds) in lieu of a border or loading stripes

I have found that some games claiming to be SpeedLock actually fail to adhere to these basic rules of the loader, the most prominent ones being mostly Types 1 and 2, as well as a few Type 5 and 7 games. Just as a heads-up, I'm currently loading each game one by one and determining which type it could be reassigned (to simplify and tidy it up a bit) - determined by the decryption sequence, the most common ones being:

Bubbling sound/melody
Fast-paced high-pitched bleep (think of someone swearing repeatedly)
Slow-paced bleep transposed down a tone
No action or sounds (silent decrypter)

I will report back when I have thought of an alternative way to catalogue such titles... if I can get through 1000+ loading tapes.
Post edited by Swevicus on

Comments

  • edited February 2013
    Look, there's something I don't understand - you may have explained it already, in which case I've missed it, but why exactly do you want to protect the Red Dwarf game with a SpeedLock loader?

    It's going to be a free game, right?...so why bother?

    ...It may shave a minute or two off the loading time if you're loading the finished game on a real Spectrum, but I bet most people wouldn't mind spending a minute or two extra for the higher successrate they'll have loading the game. And only a fraction of those who'll play the game will do so on a real Spectrum.
    Website: Tardis Remakes / Mostly remakes of Arcade and ZX Spectrum games.
    My games for the Spectrum: Dingo, The Speccies, The Speccies 2, Vallation, SQIJ.
    Twitter: Sokurah
  • edited February 2013
    I don't want to smegging protect it! It's something I'm doing in my spare time. I'm running through the various loaders in my spare time and seeing which ones are compatible with my Speccy/emulator/phone - because a LOT of 128K-only games were notorious for using those loaders, and I'm buggered if I'm going to let the Red Dwarf game I am so dearly working on be coded with one of those things... unless it'll help speed up the loading process, but that won't matter thanks to emulation and hardware improvements to the Spectrum! You've got to think ahead sometimes.

    It's just me - I'm a natural born Rimmer (minus the 'H' and stupid haircut and uniform obsession).
  • edited February 2013
    their is not much point using speedlock
    it's been well documented on how to break the speedlock protection and completly remove it
  • edited February 2013
    I didn't plan on integrating it - it was just a fun project I did in me spare time... and a little rant I did on how the 7 versions aren't so different to each other. Seriously, I'm beginning to sound like the AVGN here.
  • ZupZup
    edited February 2013
    Well, Speedlock was meant to avoid software piracy, so complexity was not a disadvantate.

    Although I've been unable to crack any program using it (yet), I've read some things about it. In earlier versions, they had a fixed number of data decryptors that could be choosen from a few algorythms. In later versions, they put more data decryptors choosen from several algorythms. Not every Speedlock 7 had the same algorythms, and I don't know if they even had the same number of decryption loops.

    I guess the other features (speed, border stripes, etc) may vary also between loaders of the same version (although I think earlier versions haven't those variations).

    (BTW, v1 Speedlock usually had TWO basic blocks)
    I was there, too
    An' you know what they said?
    Well, some of it was true!
  • edited February 2013
    I can see the OP's point in wanting to use Speedlock, I know it offers no real protection as such these days but (perhaps I'm wrong) I do like playing with loaders. Although I could not get the Alcatraz stuff to work properly (yet)

    Regarding Speedlock, I think only the later versions perhaps v3 onwards ? used different colours. I recall the earlier versions did not do an LDIR or similar to get the screen up quick it was loaded in the conventional 16384 place, seen by calling the loader directly without a black screen and watching it.

    Disclaimer: I know little about Speedlock just my initial observations. :)
  • edited February 2013
    There might be more than 7 speedlocks if you wanted to separate each difference.
    I think there's a Speedlock 8, which is a later version of 7.

    Of course we number them 1~7 based on (at the time) Ramsofts findings.
    We could have kept 1~4 but used points to separate the variants. I don't know which
    would be best, but we've used the numbering for a while so probably isn't any point considering changing it.

    I probably have a Excel Spreadsheet or some TXT file knocking around from various others' findings of which titles use which speedlock. There are some searchable via WoS's infoseek using the speedlock scheme under advanced.

    We've also tried replacing pauses and decryption tones when revisiting some titles, as some were broken or missing them.
  • edited February 2013
    I always went with the types described by Jon North in the How To Hack articles.

    I don't think they match with the types listed on WOS though.
  • edited February 2013
    Yeah, we already did that for the ZXSpin flash loader.

    D.
  • edited February 2013
    It's a hard task, keeping the past alive - retro computers will always have a place in my heart, though, so it's worth it. :)
  • edited February 2013
    Here's a (non-programmer's) musician's perspective - you can tell which version is which by the noise it makes as well as the loading stripes. I have no idea which version is supposed to be which so I'm just going by what the tzx vault says here.

    Anyway I always used to be able to tell a Speedlock 1 or 2 game by the noise it made when loading in the first (or sometimes second) bit of basic, it sounded like it went "SPEEEEEEDlockxzxzchhrhchhxhzhxhzhchchh" (etc) and I think that was the rem statement in line 0 "Protected by SPEEDLOCK" with loads of spaces before it although the very early ones like Daley Thompson's Decathlon didn't have this.

    Anyway Speedlock 1 was 84 to about 86, normal loading stripes, data sounded "normal" when loading, just sped up a bit.

    Some of them loaded the screen and game in one go, some loaded the screen, then a separate block for the game - I think US Gold and a few Gremlin games did this but can't remember offhand.

    Speedlock 2 was 86-87, the main difference was the data was encrypted - listen to the screen loading, it sounds noticeably "odd" compared to Speedlock 1.

    Now there were 2 versions of Speedlock 2 - one had normal loading stripes (e.g. Terra Cresta), a later one had red/black for the leader and blue/black for the data (Head over Heels)

    Speedlock 3, 4 and 5 must've been some time in 87, they'd ditched the shortish "SPEEEEEEEDlock" BASIC bit in favour of a big block of code and all those bleeps and clicks afterwards. This was the one where the screen appeared in one go with the timer countdown. Speedlock 3 (Mag Max) still had the clicky leader but this was ditched by Speedlock 4 (Athena, Renegade etc).

    4, 5, 6 had all sorts of weird bloops and bleeps going on, it seemed to take 3 minutes to get as far as the loading screen appearing with the timer and one and a half minutes for the game :rolleyes:

    And judging by the tone of it, the Speedlock 7 loader seems to have a slower baud rate, which is odd... perhaps it was more reliable on the dodgy +2 tape deck.

    Yes I have far too much time on my hands.
    The comp.sys.sinclair crap games competition 2015
    "Let's not be childish. Let's play Spectrum games."
  • edited February 2013
    I've been looking at some games which appear to be listed as having "Unspecified Custom Loaders" - and I've identified similar recurring patterns:

    - The normal "Program: Name" prompt is displayed at the beginning of the opening block
    - The next block either begins with a border in a nonstandard colour, or has a small BASIC block in standard colours before loading future blocks (CODE) in nonstandard colours

    Variant 1
    - The screen AND the program are part of the same headerless CODE block recorded at normal speed
    - The loading stripes on the border are nonstandard colours (same colour for the pilot tone and data) for the majority of the block
    - The final minute of the block has the loading stripes suddenly switch over to multicolour stripes in a rainbow-like fashion (in no particular order)

    Example(s): Wizard's Lair

    Variant 2
    - The screen AND the program are part of the same headerless CODE block recorded at normal speed
    - The border is a nonstandard colour
    - The loading stripes on the border are multicolour rainbow stripes (both pilot tone and data)

    Example(s): The Ice Temple

    Variant 3
    - The screen and the program are SEPARATE headerless CODE blocks recorded at normal speed
    - There are NO loading stripes on the screen - the border simply flashes and cycles between colours (both pilot tone and data)
    - There is no indication that the title screen is being loaded except for the last few lines at the bottom at the end of the screen block
    - This loader can have separate smaller blocks as opposed to large single ones

    Example(s): Las Vegas Casino

    Variant 4
    - The screen and the program are SEPARATE headerless CODE blocks recorded at normal speed
    - Some games will include a pre-loader warning or notice followed by a short BASIC block with a header (especially true if it is a multiload game)
    - The remaining blocks are in multicolour rainbow stripes
    - There is no indication that the title screen is being loaded except for the last few lines at the bottom at the end of the screen block
    - This loader can have separate smaller blocks as opposed to large single ones

    Example(s): Dragon Spirit

    I've been racking my brains to come up with a name for this loader (and no, I'm not confusing these loaders with the Injectaload or Flash Loaders). Since the variants share the same multicolour loading stripes (or lack thereof), I was thinking of christening it the "Arcus Loader" ("Arcus" being Latin for "Rainbow"). The data encoding seems to be very similar to each other, so I'm not just picking out random custom loaders (NOT protection schemes). I wonder if anyone on the WOS Administration team is reading this - perhaps you could consider naming this loader based on the information I've given (Arcus x - x being the variant number).

    Additional: By the way, this loader was used in both 48K AND 128K games, to my knowledge.
  • edited February 2013
    Its a shame the 'builders' for these routines have been lost to the passage of time :( they would be interesting to play with.

    Yes I know there's the later Alcatraz stuff but that's quite difficult to use, then again the Speedlock one might not be any easier but I suspect it would be being a bit simpler, earlier versions especially.

    Am surprised its not around though given a lot of companies used it it seems...
  • edited February 2013
    Good work Swevicus and leespoons!

    And now you've got me all fired up!

    Why do loaders get me excited? Probably because they were so clever in the day, but most people wouldn't have realized what they were seeing.
    I still tinker with my Chromoload to this day, and will someday get it to do the funky things I wanted in the 80's, where it was used on Cybex and Skyway. Though, Cybex was just faster loading. Skyway loaded the screen oddly and had a counter (no where near as good as speedlock! But I was only a teenager!)

    Going to have a play with speedlock later.... Rah!

    (I also love the Dave Cooke and Steve Marsden loaders, starting with Tech Ted. Awesome!!)
  • edited February 2013
    I know what you mean, they do fascinate me to this day :) :oops: :)

    Would be interested in seeing either an easy (ish) to use Speedlock builder or perhaps Chromoload, will check those two titles you listed to see Chromoload.

    EDIT... Oh I see what you mean about Skyway, loading the attributes for each line in advance, looks neat. :)
  • edited February 2013
    Yeah, and it's top down. I think the loader pre-calculated the address of the each attribute and pixel line in the order it wanted to load them when it starts up. Each block of 32 bytes read from tape is loaded at each of these addresses, so they fill the screen top down. Then the loader reverts to normal sequential order loading.

    The loading screen itself was reordered before saving so that it was: one row of attributes followed by eight rows of pixels, followed by the next row of attributes... and so on. If you could look at the screen during saving, you'd see a mess with flashing attributes etc.

    The counter is not very good. Would have loved to make it rotate like speedlock, but as I basically ripped the loaded from the ROM and messed with it, I was always fighting the ROM design. Should have started from scratch, which I have now.

    I've got the "master maker" on +D disc here somewhere.... I'll dig it out.

    Edit: See http://www.worldofspectrum.org/forums/showthread.php?p=683059&postcount=30
  • edited February 2013
    Wonderful. :)
  • edited February 2013
    There is a save routine for Speedlock embedded into the code for Speedlock 4-6 (or Speedlock 3 in old money) which resets the machine after running. I never looked into it all that much, so I don't know if it does things properly or is merely there as a plausible-looking decoy.

    Certainly, the Speedlock TZX creator in SPIN doesn't use any Z80 code to save anything, it's generated entirely in Delphi, as a TZX, without ever having been an audio signal. This has some advantages, such as not requiring any of the Speccy's memory for a save routine, and being able to relocate the loader anywhere in uncontended memory.
  • edited February 2013
    SpeedLock TZX Creator? What are you on about?
  • edited February 2013
    Swevicus wrote: »
    SpeedLock TZX Creator? What are you on about?

    The one that ZXSpin has had in for... how many years now, Marko?

    That one. Glad you were paying attention.

    D.
  • edited February 2013
    Found it.
  • edited February 2013
    Dunny wrote: »
    The one that ZXSpin has had in for... how many years now, Marko?

    That one. Glad you were paying attention.

    D.

    Call me a thicko (I haven't used ZXSpin for years) but how do you go about saving something to tzx as a Speedlock file?

    I can see the "save TZX snapshots using SPIN loader/Speedlock 1/Speedlock 2" but how do you save a TZX snapshot in the first place? :confused:
    The comp.sys.sinclair crap games competition 2015
    "Let's not be childish. Let's play Spectrum games."
  • edited February 2013
    leespoons wrote: »
    Call me a thicko (I haven't used ZXSpin for years) but how do you go about saving something to tzx as a Speedlock file?

    I can see the "save TZX snapshots using SPIN loader/Speedlock 1/Speedlock 2" but how do you save a TZX snapshot in the first place? :confused:

    It took me a while to notice that ages ago too. Anyway:

    Get the game etc where you want it and pause it or otherwise

    Choose to save snapshot from the menu then ensure you choose to save it as a .tzx, change the dropdown to this choice.

    Only slight concern is the bottom two lines can get corrupted, I suspect the code for the loader is living here.
  • edited February 2013
    Aha, thanks Spider :smile:
    That'll come in handy for the Crap Games Competition if nothing else.
    The comp.sys.sinclair crap games competition 2015
    "Let's not be childish. Let's play Spectrum games."
  • edited February 2013
    spider wrote: »
    It took me a while to notice that ages ago too. Anyway:

    Get the game etc where you want it and pause it or otherwise

    Choose to save snapshot from the menu then ensure you choose to save it as a .tzx, change the dropdown to this choice.

    Only slight concern is the bottom two lines can get corrupted, I suspect the code for the loader is living here.

    Yes... sort of. The loader itself resides elsewhere but the screen does hold a short snippet that attempts to restore the machine to the state it was in when it was saved by restoring registers and erasing all trace of the loader (and loading a short block of code with the ROM loader, to restore the memory used by the Speedlock loader, if absolutely required).

    Unfortunately, this code has to go somewhere, and it has to survive right up until the Speccy starts executing the loaded code. The screen is the best bet for this. If for some reason your program has its own code in those 2 lines at the bottom of the screen, this entire process will fail!
  • edited February 2013
    leespoons wrote: »
    Aha, thanks Spider :smile:
    That'll come in handy for the Crap Games Competition if nothing else.

    Did you notice that Marko and Dunny were posting to the thread ?
    I am sure Spider appreciates the thanks, but,
    :-o :razz:
  • edited February 2013
    Eh? I was thanking Spider for answering my question.

    But if it makes you happy, I'd just like to say a big thank you to Marko and Dunny for Spin and in particular the Speedlock bit which is pretty ruddy marvellous.
    The comp.sys.sinclair crap games competition 2015
    "Let's not be childish. Let's play Spectrum games."
  • edited February 2013
    I've dug out the +D master maker disk for Skyway and uploaded to:

    http://www.zxdesign.info/software/skyway3.shtml

    This should be added to the WOS archive sometime.

    I'd say "Enjoy!", but unless you're in the mood for creating a bunch of cassettes.... well, I suppose the code is interesting....
  • edited February 2013
    Thanks. :)

    Had a brief play although I need to put a bit of time into it. I'll admit it took me a few minutes to work out (read remember / look up) the +D disk commands. :oops:
Sign In or Register to comment.