LIST of loader screens

General software. From trouble with the Banyan Tree to OCP Art Studio, post any general software chat here. Could include game challenges...
Post Reply
namco
Manic Miner
Posts: 247
Joined: Mon Dec 04, 2017 8:55 pm

LIST of loader screens

Post by namco »

I've been testing my new kempston interface (3 ports that seem to be kempston and sinclair) and I loaded up an old classic that I got from ebay - Who Dares Wins 2.

I couldn't get it to load, weirdly. I've never had any issue with the copy I had in the day. I did notice that this copy had a different loading setup so maybe a different revision? (Speaking of loading issues....Henry's Hoard! XD)

Anyway, when it failed to load I hit the LIST command and got this:

Image

Does anyone want to add to this post to see if other loaders had something like the above? Would be interesting to see if there were any differences!
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2640
Joined: Mon Nov 13, 2017 3:16 pm

Re: LIST of loader screens

Post by Ast A. Moore »

Not sure exactly what you’re asking. This is from the Zafiro re-release of the game. Other releases had similar simple BASIC loaders, which then loaded a small machine code loader at address 56850. The only version that didn’t was by Alternative Software. It omitted the loading screen and the machine code loader altogether and loaded and launched the game directly from BASIC.
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
namco
Manic Miner
Posts: 247
Joined: Mon Dec 04, 2017 8:55 pm

Re: LIST of loader screens

Post by namco »

I was just interested in seeing other basic code from other loading screens (like the one pictured).

As for WDW2, looks like I'll have to find another copy as, sadly, that one isn't working.
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2640
Joined: Mon Nov 13, 2017 3:16 pm

Re: LIST of loader screens

Post by Ast A. Moore »

namco wrote: Tue Apr 10, 2018 1:47 am I was just interested in seeing other basic code from other loading screens (like the one pictured).
Um. Sorry, I still don’t follow. What do you mean exactly by “BASIC code from loading screens”? A loading screen is just that—data placed in the display file (usually) before the main game code loads so that the user has something to look at in the mean time. The BASIC you see on the screen is what loads the rest of the game. It’s the first bit that is loaded from tape.

Most commercial software prevented you from breaking into the BASIC. Moreover, it often contained very sophisticated machine-code loaders wrapped inside a BASIC listing. Usually, the only statement interpreted by the BASIC was a RANDOMIZE USR xxxxx, which immediately started executing the machine code placed elsewhere. (I use a similar method myself for my games, although the reason for it is reduced size and loading time, rather than obfuscation.) Even in your picture, the start address is deliberately obfuscated. The RANDOMIZE USR 634 statement is nonsensical in this context. However, examining the code (from the actual tape image, that is, not your picture), reveals that a simple trick was used to mess up with the string displayed by the BASIC interpreter. The actual number is 56850.

So, unless there’s something unusually clever that can be seen by simply listing the BASIC, I don’t see the purpose of what you’re asking (unless I’m being unusually thick and miss the point altogether). It could be useful as a Development topic, perhaps, I’m pretty sure the casual gamer couldn’t care less.

P.S. Now that I think about, I’m not sure how you were able to break into BASIC to begin with. It clearly messes up the ERR SP system variable, so if you try to break into BASIC after the LOAD statement has been executed, the computer should reset. Hmm. Are you pulling our leg here? :lol:
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
namco
Manic Miner
Posts: 247
Joined: Mon Dec 04, 2017 8:55 pm

Re: LIST of loader screens

Post by namco »

P.S. Now that I think about, I’m not sure how you were able to break into BASIC to begin with. It clearly messes up the ERR SP system variable, so if you try to break into BASIC after the LOAD statement has been executed, the computer should reset. Hmm. Are you pulling our leg here?
All I did was try and load it (again) and it just gave me that:

OK [some numbers here]

So I hit LIST and got the below. I suppose I just got lucky. Side B got to the program message before it decided to fail and that wasn't at the beginning of the tape(?)
So, unless there’s something unusually clever that can be seen by simply listing the BASIC, I don’t see the purpose of what you’re asking (unless I’m being unusually thick and miss the point altogether). It could be useful as a Development topic, perhaps, I’m pretty sure the casual gamer couldn’t care less.
Yeah I was more interested from a developer perspective (so this was probably the wrong section to put it in). The purpose I was looking for was to see if you could break into the loading part and see what games gave you the above (since that's what happened to me). But if it's a crap/incorrect idea then don't worry about it! :lol:
Nomad
Manic Miner
Posts: 600
Joined: Thu Dec 28, 2017 12:38 pm

Re: LIST of loader screens

Post by Nomad »

Learning how the protection schemes worked is not a bad way to spend your time, there are still some schemes that remain to this day un-cracked.

Same goes with the Atari - was only in 2015-2017 that the encoding scheme for a whole range of educational software/audio hybrid products was understood. But that was a huge undertaking.

But the basic loaders - not so sure. It's the first step in the chain. To understand the protection scheme the loader is like the initial stub that loads the real meat of the protection routine. Sure there will be some variation to the basic loaders but no where near as much as the protection routines that they actually load.

I think you are focusing on the wrong part of the chain. But if you want to document all the various loaders then have at it. Just not sure if its going to get you the result you want.

Spectrum Trade Secrets was a great little guide to copy protection.

https://spectrumcomputing.co.uk/index.p ... id=2001252
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2640
Joined: Mon Nov 13, 2017 3:16 pm

Re: LIST of loader screens

Post by Ast A. Moore »

namco wrote: Tue Apr 10, 2018 1:30 pm All I did was try and load it (again) and it just gave me that:

OK [some numbers here]

So I hit LIST and got the below. I suppose I just got lucky.
I see. Yes, seems like a fluke. (I don’t really see how it got to that point. Perhaps it loaded the file all the way through but the checksum didn’t match.)
namco wrote: Tue Apr 10, 2018 1:30 pmI was more interested from a developer perspective (so this was probably the wrong section to put it in). The purpose I was looking for was to see if you could break into the loading part and see what games gave you the above (since that's what happened to me). But if it's a crap/incorrect idea then don't worry about it! :lol:
No, it’s fine. I was confused mostly because you posted it in the wrong area. Create a separate thread in the Development section (but name it more appropriately), and I’ll be happy to chime in and share my knowledge on the subject (however limited it may be).

As I mentioned before, loaders could get really, really—and I mean really—complicated. Most people incorrectly assumed it was to deter illegal copying, but the primary goal was to protect the IP. Your example is about one of the simplest applications of implementing the “mind your own business please” protection method. It’s also pretty nasty in that it resets the machine if you hit the BREAK key. I prefer to be much more user friendly, so in the Turbo Loader version of Yankee, for instance, I simply ignore the BREAK key; I also allow the user to rewind the tape and reload a block if there’s a loading error. The loader will ignore wrong blocks and will only proceed to load the correct one. It’s pretty bulletproof in this regard.
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
Post Reply