Friday 7 June 2013

Tape To Disc Conversion

Episode 17 contains a feature about transferring games from tape to disc the modern way. This feature accompanies the episode and includes code snippets not shown in the video.

For those lucky enough to purchase the Spectrum +3, it would seem the days of slow tape loading were over, with Amstrads decision to replace the cassettes deck, as seen in the +2, with a 3 inch disk drive.

However, as with any new media format, and like its predecessor the Microdrive, the hardware was only half of the story. To make it work you had to be able to get your existing software collection onto those new fast discs.

Because of software piracy however, tapes had increasingly sophisticated protection schemes on them making the task of transfer seemingly impossible. It was hard enough to even just load the tapes sometimes!

Like the Microdrive, as the unit became available, a host of transfer options began to open up, the best was the Multiface 3. A hardware plugin that allowed users to freeze and save the game to disc quickly and easily. But for those without this unit, the only option, at least in the 80’s, was a software transfer utility.

There were several of these on the market, but after trying several with no success, I had to turn to more modern methods of software transfer. After trying a few options I found two to be satisfactory, however none are straight forward and I think there is hole in the market for a nice Windows tool to do it all for you.

To transfer 48k games to disc you will need the following software;
  1. A spectrum emulator. 
  2. Snap2Tap – a utility that converts SNA files into compressed, single loading TAP files. (look on the World Of Spectrum website for this.) 
  3. TAP2WAV – A utility that converts TAP files into WAV files. Or a tool to directly play TAP files. (look on the World Of Spectrum website for this.) 
  4. Something to play the WAV files and possibly to adjust it – like Audacity. 
  5. A little knowledge of BASIC. 
The process has a few steps, but once you get used to it, it can become very quick. Using this method I managed to get about ten games on each side of disk plus a little loader program.

First choose your game. For this feature I am going to use Chuckie Egg.

Next load the game into the emulator. At a point in the game where the screen is cleared, usually after dying or just before the main intro screen, pause the emulator and save the game out as a SNA file.

Load up SNAP2TAP. Set it for a blank screen – this reduces the size of the overall finished game and stops screen corruption when loading.

Drag the SNA file into it.

You will now have a TAP file containing a compressed, single load version of the game.

If you can play this TAP file and load it into your real Spectrum +3, you can jump ahead – if it won’t load then you will need to convert it into a WAV so you can ramp up the volume a bit.

Using TAP2WAV, convert it and load it into your audio editor, ramp up the volume and either save it, or try loading it from there. When you get it to load, you are ready for the next stage..

On the real Spectrum with a formatted disc, go into +3 basic… set the Spectrum to load from TAPE by entering LOAD “t:” and pressing enter.

Merge the loader from the TAP file so you can see the listing.

MERGE “”

It will look like the code below (the addresses will be different as these are based on the memory the game uses, in this particular case it is for Chuckie egg.)

10 CLEAR VAL “54554”: LOAD “v2” CODE: RANDOMIZE USR VAL “54555” 

Now we need to make a few changes. I usually set the colours, clear the screen, print a press any key message and add a pause. This is to allow the drive motor to stop – otherwise the game will run and the drive motor will keep going! It is also important to remove the randomize line, and change the code load to the name of the game file. In this case PART2.

Your listing will now look like this.

10 BORDER 0: INK 4: PAPER 0: CLS
11 CLEAR VAL “54554”
12 LOAD “egg2” CODE
13 PRINT AT 10,8; “Press Any Key”
14 PAUSE 0
20 RANDOMIZE USR VAL “54555” 


Notice the name of the code to be loaded – in this case egg2, but you use whatever you need. Just make sure you remember it.

Now, set the Spectrum to use the disk drive (enter LOAD “a:”) and save this, making it auto run by using SAVE “egg” LINE 0

Once saved go back to the code in the loader and remove all of the code below line 12, leaving just lines 10,11 and 12.

Set the Spectrum to use the Tape again. (LOAD “t:”)

Run the program – this will now load the code.

Now, set back your Spectrum to use the disk drive again so we can save out the second part of the game to disc. Before that though, we need to get the size and address of the code. In the emulator, drag the TAP file into it and look at the tape browser. Here you will see the second part of the game code, its loading address and its size. Note these down. Use these settings to save the code to disc using the name you entered into your loader. For example:

SAVE “egg2” CODE 54555,10981

Notice I saved the code as egg2, the same name used in the initial loader – very important!

That’s it. Now have your first game converted to disc.

To test it, reboot your Spectrum and load part one.

LOAD “egg”

Once you have a few games on disc, you can write a simple menu program that auto loads and offers you a choice of games. To do this, write a small basic program like the one below, that lists the games and gives a key to press for each one.

10 BORDER 0: PAPER 0: INK 4: CLS
12 PRINT AT 1,8; “GAME DISC”
14 PRINT AT 3,10; “1 - CHUCKIE EGG”
16 PRINT AT 5,10; “2 - SPACE RAIDERS”
18 PRINT AT 7,10; “3 - PLANETOIDS”
50 PAUSE 0
52 IF INKEY$=”1” THEN LOAD “EGG”
54 IF INKEY$=”2” THEN LOAD “SPACE”
56 IF INKEY$=”3” THEN LOAD “PLANET”
60 BEEP 0.5,1
62 GOTO 10

Of course you can change the colours and positioning for your own personal tastes. Now save this to disc using SAVE “DISK” LINE 0

Now, reboot your Spectrum and just hit return.. there you have a game selector that loads your games. As mentioned before, it’s a pity that SNAP2TAP only works with 48k games, but at least it works.

This feature was taken from Episode 17.

Coming soon… using a 3.5inch disk on your Plus 3

5 comments:

GazJ82 said...

Hi Paul. Thanks for this it really helped make my +3 disk drive useful!

I also found this +3 utility called tapedisk it helps automate some of the above. It will work with most older games without any intervention apart from changing the basic loaders of course.

http://www.worldofspectrum.org/infoseekid.cgi?id=0027483

GazJ82 said...

I have no idea why my post above came out as Unknown. I have wrote a nice menu in basic that allows you to just put the game name and filename in some data statements at the end to make menu creation easier. I can send a copy if you would like to post it.

Thanks gazj82

RAMPARTS said...

tapedisc just works with normal game loaders

initaial header
screen
final game code

plus would have to edit header too

great post

would love to have that menu maker ,I AM TRYING TO CONVERT SOME GAMES TOO...

best regards

JOSÉ GONÇALVES

michalh said...

I have a comment about the auto-loader on lines 52-56 - for the floppy drive to stop, it helps, for example, to exit the loop via GOTO at the end of the code

20 BORDER 0:PAPER 0: INK 4:CLS:PRINT"GAME DISC"
30 PRINT"1-BOMBJACK"
100 PAUSE 0
110 IF INKEY$="1" THEN LOAD "BOMBJACK":GOTO 210
200 BEEP 0.5,1:GOTO 20
210 REM

Filmik https://youtu.be/lUaaolCDdAU?feature=shared

michalh said...

Auto-loader https://youtu.be/b-IX_Zhm0TI

Post a Comment

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Dcreators