Last modified on 17 January 2009, at 16:54

Transferring tapes to emulators

Revision as of 16:54, 17 January 2009 by Octoate (Talk | contribs) (initial check-in)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
This article originally came from Kevin Thackers' archive at http://www.cpctech.org.uk.

This document will describe the method to transfer Amstrad cassette software to be used with a emulator.

The cassette software needs to be converted into a tape-image which uses the TZX/CDT file structure.

There are already many tools that exist for transfering Spectrum cassette software and some of these work equally well for the Amstrad.

You will need:

  • a computer with a sound card that can record sound.
    I have a Pentium-II 333 PC with a Soundblaster 16 ISA which has a "Line Input" connector.
  • You will need to find the "Line Input" connector of the sound card.
    There might be a "Mic Input" but this is not suitable. The sound card may filter the sound through this connector and therefore distort the incoming sound signal. I have heard that the "Line Input" is not affected.
  • Software to record the sound. The software will need to be able to record around 15 minutes of sound for most cassettes, although other cassettes such as compilations are much longer.
    I use "Goldwave". Goldwave website
    The "Sound Recorder" built into Windows is also acceptable, but to record more than the default 60 seconds, you will need to create a empty .WAV sound file of a suitable length (e.g. 15 minutes). You can then open this file and record the sound into it.
    It is best if you use software that will show you the sound wave that is being recorded, because you will be able to see the cleanness and volume of the signal and will be able to see any changes that are made to it.
    You will need to disable the following features (if available on your software)
    • filtering of sounds
    • bass boost/adjustment
    • treble boost/adjustment
    • balance boost/adjustment
    • 3d sound simulation Basically any effect that is applied to the incoming sound which could change it.
      If your computer is powerful enough so that you can do other things while recording, then you should check the following:
    • Record some sound while listening to a music CD in the CD player of your computer Now playback the recorded sound. If you can hear the music from the CD, then you should not listen to music CDs while you record sounds.
    • Go to the "Control Panel", choose "Sounds and Multimedia". Select "No sounds" from the drop-down selection box for "Scheme". This will stop those sound effects that Windows play's for various events. I found that these sounds were also recorded while I was recording the sound from the cassette and they caused problems when decoding the recorded sound Also, it is good if you can adjust the sample rate or recording quality. This will affect the size of the final sample file, but can also be used to increase or decrease the recording quality for different quality cassettes or for duplicated cassettes.
  • The "voc2tzx" tool.
    At this time, it is only available for Windows or DOS. So you will need Windows or DOS and a PC. I use Windows 2000, but it works equally well with Windows 95.
  • A tool to convert sound file formats. "Voc2tzx", at this time, will only accept the .voc sample file structure. So you will need a tool to convert from the format you recorded in, to 8-bit mono .voc sample file format.
    I use Goldwave because it can save as .voc.
    WATCH OUT!!!!! GOLDWAVE ALWAYS DEFAULTS TO 16-BIT STEREO SOUND OUTPUT WHEN SAVING!!!!!!!
  • a cassette recorder or hi-fi with a lead that will connect to the sound input of the sound card.
    I use a cassette walkman with a 3.5mm stereo sound lead from some old speakers. A suitable lead and adaptors can be obtained from almost any electrical store.
    It is best to be able to adjust the volume of the output from the hi-fi/stereo/cassette recorder and possibly to adjust the azimuth (the little screw by the tape head).
    The azimuth screw and tape head can be seen when the cassette is playing. You can adjust the screw (turning it clockwise or anti-clockwise) by using a philips (cross-head) screw.
    The azimuth controls the tape head. When it is turned, the sound will get sharper or distorted and could move from the left speaker to the right speaker. The aim is to make the sound as sharp and clear as possible, and if preferable to the centre of sound.
    You don't need to adjust the azimuth unless you are having a lot of problems transfering the cassette!
    If you use a hi-fi then you will need to disable noise reduction (dolby), any bass or treble boost, and reduce the boost from any equalizer.
    You should set all the equalizer levels to the same at 0. If this is not done, then the sound will be distorted and may not decode properly.
    And, if possible, you should use the "line-out" connector if available, although output to headphones is often ok.
  • Some Amstrad cassettes ;)


Testing

First you will need to test your setup is correct.

  • Connect the hi-fi/cassette player to the sound card
  • Insert a cassette into the hi-fi/cassette player (a music cassette is suitable)
  • Start your recording software
  • Press play on the cassette player/hi-fi
  • Wait for a few seconds and then stop the cassette and stop your recording software.

If successful you should have recorded the sound from the cassette. Now listen to the sound and check if there is any distortion, pop or crackles. If there is, and this was not on the original cassette, then you may have problems recording sound with your setup.

You will need to eliminate these pops and crackles before you can record any cassettes. The pops and crackles will affect the sound and voc2tzx will be unable to decode it!!!! :(

On my system, whenever the harddrive was active, there would be pops and crackles in the recorded sound :(

I eliminated the pops/cracks using these steps:

  • I increased the IRQ level of the sound card using the control panel.
  • I changed the drives from "DMA or "UDMA" mode to "PIO Only" using the control panel on the IDE drivers.

There are other methods, but if you can't elminate these problems then you can't record the sound. voc2tzx can't decode the sound unless it is clean.


Recording a Amstrad cassette and converting it to a tape-image

You will have more luck converting cassettes in the following cases:

  • The cassette is an original
  • The cassette loads and runs on a real Amstrad

If you are trying to transfer a copy (e.g. tape-to-tape duplication), or the cassette doesn't work properly on the Amstrad then it will be more difficult for voc2tzx to decode the sound. It may be because of extra noise, or the cassette may be damaged and some of the sound signal will be missing.

But, good luck!

What you need to do:

  1. Start your recording software.
  2. Put the Amstrad cassette into the hi-fi.
  3. Start recording on your software.
  4. start the Amstrad cassete.
  5. look at the signal.
    You should have a clean sawtooth like waveform which fills almost all the display where the signal is shown.
    If not, adjust the volume. If you over adjust then the waveform will distort. This is bad.
    If you under adjust then the signal will be small, and voc2tzx may not be able to recognise it. This is also bad.
    You want the volume to be as high as possible without the waveform distorting and without the volume being over the maximum that can be recorded.
  6. If all looks good, rewind the amstrad cassette and repeat steps 3 and 4.
  7. wait for the cassette to finish.
  8. Save the file.
  9. Convert the file to a 8-bit mono voc. I use 8-bit mono 22Khz .voc
  10. Check the recording. If there is any extra pops or crackles or the sound is distorted then you will need to find out why this is occuring.
  11. Attempt to identify the loader. Trying the known command-lines.
    The main problem now, is that voc2tzx doesn't autodetect the loader type. So you might need to adjust the settings and/or use different switches. You will need to attempt to identify the loader and then use the appropiate command-line as listed on ADATE.
    Note, there are many different loaders and some of these are not supported by ADATE, so be prepared for many to fail. Also, many software houses used the same loader system for almost all their software, so if you succeed with one piece of software, you might succeed again with another piece.
    One tip:
    • use the /cpc switch. You will see the filenames appear if the decoding has been correct.
    • Load the file into a hex editor and look at the ASCII values. Some loaders have the name of the loading system in the loader itself. (e.g. Speedlock, Cassys). So even if you can only transfer the initial loader files, you could still look at the hex dump of the result tzx/cdt and try to identify the loader furthur from this.
      Another thing to look for is for the bytes A1,BC prefixed with CD or C3. These bytes identify a headerless loader.
      Or, look for the bytes 77 and BC prefixed with CD or C3. These bytes identify a standard loader.
    • Don't use /cpc when you have got all the settings correct!!!!!!!!
    • change the /maxp setting, increasing or decreasing it by 1 each time. You might find that more blocks will decode.
    • Check the number of decoded blocks against the number of blocks you can see in your sound recording program. They should be roughly the same; but you might need to zoom in to see all the blocks.
      For standard loaders there are always two blocks, header and data. These have corresponding sync bytes of 26 (header) and 1C (data). These will be in a sequence for each block and the name will appear next to the header line.
  12. If it looks like it has decoded enough information, try it with a emulator. Winape, Arnold, CPCE and Multi-Machine all support the file format.
    But be aware that the CDT/TZX support might not be complete or might be bugged, so if there are problems, you should check it on another emulator just to confirm if the emulator is broken or if the transfer is wrong.
    You will also need to make sure you convert any additional levels which could have different loading methods!!!! If possible try and test the game enough to check that the levels have been transfered correctly!
    Check both sides of the cassette. Sometimes there is a exact duplicate of the game from side A, but at other times there might be extra levels.
  13. if all has gone well and the program runs; and you have transfered every level and both sides of the cassette if necessary, you can package the .cdt/.tzx files into a ZIP archive along with a text-file named "file_id.diz".
    ZIP archives can be created with WinZIP utility (WinZip)
    The file_id.diz should be in the format described in the docs/upload.txt file on the ADATE archive.

So there you have it. The main problem currently is that you might need to adjust the command-line before you will get a completely correct decoding and this can sometimes take a bit of time. The recommended command-line is given for some well known and common loaders in the ADATE docs.

Good luck!


Recording using Windows "Sound Recorder"

By default, "Sound Recorder" will record up to 30 seconds of sound. To record more you will need to do the following:

  • Create a "empty" WAV sound file in the sound format you want to record with (this sound format will define the frequency in Hz, the number of channels and the resolution of the channels; e.g. 22Khz 8-bit mono)
    For recording cassettes, this file will need to be big enough to hold approx. 15 minutes of sound.
  • In "Sound Recorder", select "Open" from the file menu.
  • Select the "empty" WAV sound file
  • Start recording.
  • When recording is complete, save the file

Notes:

  • You may see a difference when comparing the sample rate used to record the sound, and the sample rate reported by voc2tzx.
    The "voc" sample file format was designed for the original ISA Soundblaster sound card, which was only capable of playback or recording using a fixed set of frequencies.
    In the file, the sample rate is not stored directly, but is calculated from a "factor". This "factor" does not have enough accuracy to define all sample rates exactly.
    When the file is saved, Goldwave will resample the sound so it matches a sample rate supported by the voc file format. So, if you recorded a sound at 11025Hz, then it will be resampled and reported as as 11111Hz by voc2tzx.
    I haven't experienced any problem when Goldwave does this, so I don't worry about if if it happens.
  • I suggest you should use the highest sample rate that you can. A higher sample rate means the sound is recorded more accuratly, and voc2tzx has a better chance to decode it. I use 22Khz because I find it is suitable for most cassettes, and produces a smaller file compared to the file when recording at 44Khz for the same length of time.
  • For the ADATE project, please make one CDT/TZX per side of a cassette! Thankyou!