What is the Cassette Library?
The Cassette Library is an interface intergrated within the emulator to allow the user to connect to a large live database of cassette images, Which is being continually updated by ourselves.
This interface will search for your required tape, download it, store it locally, add it to the cassette deck and start it loading into the spectrum all in a click!
We currently host over 3000 tapes and are enabling more and more, withover 18000 still to go!
Note: For the initial set-up original releases take preference over re-releases, But once we have gone through them all we can look at adding multiple releases of the same tape ( requirements apply )
A cassette can only be live in the library once it has meet the requirements listed below.
What are the cassette requirements to be added to the library?
Each tape requires the following
1. Either the original tape, a digital recording of the source (.wav) or (.tzx)
2. Inlay or scan of inaly, If there wasnt one then the instructions can be used (for example some text adventures)
If for any reason the original had no documentation then a scan of the cassette itself is required.
3. Permission for the tape to be in the public domain.
Without all the requirements listed above being met, The cassette can not be added.
So the simplest way is to provide the original tape in its original case as long as it is permitted to be in the public domain, world of spectrum is a good source of information on released titles.
Why .tzx format ?
The closest format to the original cassette would be the original audio stream however this is very large, Some clever and determined indivisuals came up with a format (.tzx) which would retain the majority of the original tape layout but greatly reduce the file size. This is great news for the end user having to download the tape file and for our server bandwidth and space.
How does the tzx shrink the audio file?
In quick terms they aren't really releated a .wav or audio file is a constant stream of values these represent the audio wave form whereas a .tzx holds the bytes (data) of the cassette tape and the types of pulses and pause length's (you can think of it as a template+data) then the emulator rebuilds this into a square wave, In the vast majority of cases this works perfectly.
A .wav at 44100hz will use around 2.6mb per minute.
Jetset Willy II - .wav taking 5 minutes resulting in 12mb file size
the same tape as a .tzx takes only 47k thats around 255th of the size!!!
Snap shot files are not included in the database only files which will represent the original experiences including loading.
Cassette list of Tapes (currently) Not in the Library (coming soon)
Thanks for reading, please if you can help out do so - Enjoy ZXSpectrum4.net Team.
What is the purpose of the database ?
The aim of the database is to identify all known cassettes (or as many as possible) that were originally released for the ZX Spectrum, In order to archive this (mammoth task) we need to obtain as many tapes as possible - this is where you can help if you have any boxes of old unwanted Spectrum tapes then don't bin them donate them to this worthy project.
lf you have a tape or a .tzx of a tape we seemed to have missed? Then please let us know - contact us
Additionally we always need donations to help with development, hosting, bandwidth and purchasing tapes :)
How does it work ? (non technical, basic terms)
The Spectrum Tape
First we need a little understanding of the spectrum tape...
This holds an analogue "noise" more specifically a sequence of pulses, the spectrum listens (when asked) to these pulses and interprets them into the 0's and 1's needed to build the bytes of the program saved on the tape.
The Interpreted Bytes
So in an ideal world using a standard loader we can retrieve the bytes by doing the same as the spectrum and interpreting the pulses into their 1s and 0's then into the bytes this is what a .tzx creation tool is attempting to do rebuild the bytes of the original program which was saved onto the tape then by recording or recognising the loading method it is then possible to emulate the tape playback.
The Hash (checksum)
Now we (hopefully) have the bytes which exist on the tape using this data we can create a fixed length hash of the totaling block in this case we are using a fixed length MD5 128 bit hash value, each tape would have its own unique value in the database along with additional information about the tape.
Using the Database
Finally this is the end you see, On your PC would be (latest version) of the tape database and application opening this would enable you to scan through your .tzx files in your collection and/or new ones you've created from your own tapes and find matches in the database immediately allowing you to see if the files are recognised and if so detail on the original tape held in the database, if files are not recognised this could potentially be a new tape found instantly allowing for differing versions of the same titles.
OK this is the theory,
and so far it's working very well .... and although there are known issues... no one thought it would be easy!
Update on Work In Progress
Been testing the tzx scanner engine on the full collection to create the database, then against some adjusted files and names to try all scenarios and OK the user interface isn't anything like it will be but gives some idea of how it will work, So far its scanning average 16.57 tzx files a second so that's around the ~1000 a minute mark without any optimised code yet, also a scaled down version is being used to check tapes from individual tape images which has already turned up some useful info!!!! and it will currently detect over 13,000 tape images.
From the snap below you can see of the files scanned,
1942Mission(CCS).tzx inside the zip is "Unknown - meaning the image is not in the database
2DGameMaker.tzx inside the zip has Incorrect Name with the correct shown as "2D Game Maker.tzx"
3DContructionKit.Zip is Complete and has only been expanded to show the contents of the release zip which can contain multiple images over multiple tapes!
Contains Illegal Block
Behind the scenes: Another small step for our Sinclair buddy, but a giant leap for .net - tape2tzx
Interrupting the bytes from an audio wav file, although possibly bit hard to see from the image below (nice user interface!) the audio wav is squared to produce the pulses recognised by the spectrums in(ear) port, the gray lines are the digital audio wave, the red lines squared and lifted for overlaying view.
The approach so far has been to build the code to apply rules of known timings constants against the wave directly, rather than use our existing z80 engine, and with no optimisation a 12mb wav of over 5 minutes takes just over 2 seconds on development machine to analyse and produce a tzx which is ok for us, although when it comes loaders it may be we take the z80 engine option! See how we go.
FYI: Why haven't we used our z80 engine to interpret the bytes from the wave? We'll as we mentioned maybe we will use it, but the reason we've so far opted for direct method is for the ease of debugging as we have no emulation to step through we get a clearer view of what's going on rather than debugging emulation which is trying to emulate something else! - did that make sense who knows?!
Share this page with your freindsTweet
we need your help!
ZX Spectrum Cassette Database
In order to maximise the database we need to find as many cassettes as possible, from unknown ones to ones known but we are unable to locate.
If you can help us with any old cassettes you may have in the loft you no longer want or know someone that has then please contact us and give them to a good home, If we can't get there in person we can get them collected by courier - please don't throw them!
Don't worry if you have no old cassettes please register your copy of the emulator by doing so helps us obtain further hardware and software for the project, and plus gives you full functionality of the emulator.
Help by donating or registering
A big "THANK YOU!" to everyone the has donated, time, money, knowledge, tapes and hardware we are truly grateful - ZXSpectrum4.net Team.
ZX Spectrum Emulator for Microsoft Windows, developed under Microsoft .net framework.
It emulates all known ZX Spectrum behaviours, timing and models 16k, 48k, 128k, +2, +3 (including 3 inch floppy disk drive and tape deck emulation), Sound, Border, Basic, Snapshot saving and more... supported file formats include .wav .tzx .sna .z80 .tap .dsk
We've now included a couple of games in different formats to help those non technical get started, for more help please visit the help section
Microsoft Windows 8, 7, Vista, XP
( XP requires microsoft .net framework )
Latest Version 1.0.6212 Build: 22150 (29171)